Accepted Talks

  1. Acceptance Test Driven Development

    Jessica Ingrassellino

    Python offers excellent frameworks for unit and integration testing. However, many people don't realize that Python also has tools that have been built for Acceptance Test Driven Development. This talk will focus on Behave, an acceptance test development tool similar to Cucumber. Behave uses Python and Selenium, making available the libraries of both to create robust testing for front end applications.

  2. An Iterative Approach to Inverse Problems using Python's Numpy

    Katya Vasilaky

    This is a talk about inverse problems and improving on past algorithms that have focused on inverse problems in math, data science, tomography, and image processing. We use a new iterative method coded in Python's Numpy and show it's ability to recover images compared to previous approaches.

  3. A Tour of the Asynchronous Web

    Peter Herndon

    Learn the difference between synchronous and asynchronous web frameworks, why you would want asynchronicity, and some of the ways to achieve it. We will also explore some of the currently available asynchronous web frameworks, compare simple example applications written in each, and take a quick look at how they perform under different flavors of Python - 2.7, 3, and PyPy.

  4. Building a data processing pipeline in Python

    Joe Cabrera

    Recently, the growth of publicly available data has been enormous. Python has a number of libraries and tool to aid you in building your data processing pipeline. These tools include Celery, Requests, BeautifulSoup and SQL-Alchemy. When combined together you can build an efficient and scalable data processing pipeline.

  5. Building a Real-Time Analytics Service with InfluxDB

    Jeremiah Malina

    "Real-time Analytics" is a near ubiquitous term in the tech industry today and users expect dashboards to update in real-time, but providing real-time analytics can be hard and usually involves many moving parts. In this talk we'll explore how InfluxDB can simplify the real-time component of an analytics stack.

  6. Building Cross-Platform Native Desktop Applications with PyQt

    Adrian Heilbut

    Qt is a mature C++ framework for building cross-platform, native GUI applications that target Windows, Mac, Linux, mobile, and embedded platforms. PyQt (and PySide) provides python bindings for the Qt library, and allows one to quickly and easily build GUI applications in pure Python. While web-based and mobile development gets all the attention these days, there are still many use-cases for which native apps are much more suitable. Qt provides an extremely rich and well-designed set of classes to build complex user interfaces both visually (with Qt Designer) and programmatically, and PyQt makes building native apps incredibly fast and easy. This tutorial will introduce the main ideas and modules in Qt and how the bindings work, and demonstrate building an application from scratch with PyQt.

  7. Building tools for Social good

    Eric Schles

    Computational tools are becoming increasingly necessary in the world of social good. There is an increasing need for data science, automation, search and distributed computation. In this talk I will take listeners through a number of general purpose tools including, building a image search database with python and a few libraries, how to build geographic information systems with geodjango, and how to process and extract information from pdfs.

  8. Collecting and Organizing Boiler Data From Various Online Databases

    Steve Slotterback

    In New York City, building management agents and steam heating contractors alike typically work with hundreds of buildings and at least as many boilers. When there is an issue with the boiler, they need to be able to get as much data about that specific boiler as quickly as possible. Thankfully, the New York City Department of Buildings (DOB) and the Department of Environmental Protection (DEP) have published databases online with various data on publicly registered boilers and burners. In this talk, I will discuss the methods I have used to scrape these boiler and burner data from the web using python libraries.

  9. Connecting color and language

    Dean Hillan

    A project that maps descriptive, human-generated language for many different colors to a collection of images. This allows specific searches to be carried out on the color content of the images. The technique is applied to the image collection of Paperless Post cards to help improve user search.

  10. Contributors, Colleagues, Clients & Customers: Sustaining Open Source Communities (Keynote)

    Nick Coghlan

    When it comes to open source software, what do you want to be doing? Do you want an occasional hobby where you can have fun contributing back to the community? Have a significant impact on the world by being able to commit full time to growing the available pool of free & open source software? Spend time getting to know the needs of a particular organisation, and applying open source tools to solve their problems? Or perhaps you'd prefer to understand the general needs of a broad category of potential users, and design open source tools that will solve their problems without customisation?

    Getting involved in open source development communities can offer all these opportunities and more, but it also makes it incredibly easy for us to overcommit and burn ourselves out. If we're not careful, our unrealistic expectations can also contribute to the burnout of our peers. To ensure sustainability, we need to come to a shared understanding of some of the different ways we can engage with open source communities, what we can reasonably offer for free, and what we should expect to be paid for.

  11. Development with Vim and Python

    Jerry Meeker

    Using VimL and Python to write scripts for the Vim text editor.

  12. Dev Environments: The Next Generation

    Travis Thieman

    Development environments are a necessary part of every developer's workflow. They can also be a great source of friction. What may begin as simply running python my_app.py eventually bloats as you add more apps, more databases, more testing frameworks, and more developers. We'll talk about the evolution of a typical development environment, how it lets us down, and how we try to make it better. We'll end with an introduction to Dusty, a new tool which uses Docker containers to take our development environments to the next level.

  13. Docker containers in the cloud: Provider Deathmatch

    Jeff Uthaichai

    This talk will be co-presented with Chris Becker.

    Running Python applications in containers has been a paradigm shift that has enabled developers to spend less time worrying about infrastructure across multiple environments. Cloud providers are catching up with this shift and have started to provide services to host containers with ease. We'll pit the big providers against each other and declare the victor.

  14. Foreign Function Interfaces for Web Developers

    Tristan Fisher

    Python is a general-purpose programming language that is well-suited for a web application stack. However, components of your Python application could benefit from "mixing-in" the features of other languages. This talk will cover strategies for integrating Python and other languages, including Foreign Function Interfaces.

  15. Garbage Collection in CPython

    Andrée Monette

    This talk is an overview of CPython's approach to memory management - how the life cycle of an object progresses, how objects are flagged for collection, and the tools that Python provides for manipulating the garbage collector's behavior. Along the way, we'll explore how to learn about Python language features through experimentation.

  16. Generic Programming for Agent-Based Modeling

    Gene Callahan

    How to use the techniques of generic programming in the context of agent-based modeling.

  17. Going parallel and larger-than-memory with graphs

    Blake Griffith

    Dask is an open source, pure python library that enables parallel larger-than-memory computation in a novel way. We represent programs as Directed Acyclic Graphs (DAG) of function calls. These graphs are executed by dask's schedulers with different optimizations (synchronous, threaded, parallel, distributed-memory). Dask has modules geared towards data analysis, which provide a friendly interface to building graps. One module, dask.array, mimics a subset of NumPy operations. With dask.array we can work with NumPy like arrays that are larger than RAM and parallelization comes for free by leveraging the underlying DAG.

  18. Hacking with python for dummies. (Ms-067 implementation)

    Yam Peleg

    With all the current news about cyber security, hacking a computer seems to be a simple process in now days, but is it? How hard can it be to break into a personal computer using only python?

    Yam Peleg performs a live demonstration of malicious code in action, designed specifically to penetrate and steal information, the malware and the exploit will be written using only python.

    Note: This talk includes heavy live code development and reverse engineering.

  19. Hack the Derivative

    Erik Taubeneck

    Numerical estimates of the derivative of a function are typically done using an approximation called "Finite Difference." However, the accuracy of this method is computationally bounded. Using Complex Analysis, we're able to take the step in the imaginary direction on the complex plane and achieve near perfect estimation of the derivative in only three lines of code!

    Slides available at: http://slides.skien.cc/hack-the-derivative-pygotham.pdf

  20. How Do Python Coroutines Work?

    A. Jesse Jiryu Davis

    Python 3's new “asyncio” module is an efficient async framework similar to Node. But unlike Node, it emphasizes a modern idiom called "coroutines", rather than callbacks. Coroutines promise the best of two worlds: the efficiency of callbacks, but with a natural and robust coding style similar to synchronous programming.

    In barely 30 minutes I live-code a Python 3 async framework. First, I show how an async framework uses non-blocking sockets, callbacks, and an event loop. This version of the framework is very efficient, but callbacks make a mess of the code. Therefore, I implement coroutines using Python generators and two classes called Future and Task, and update my little framework to use coroutines instead of callbacks.

    The live-coding demo isn't just a magic trick: watch to see how simply a coroutine-based async framework can be implemented, and gain a deep understanding of this miraculous new programming idiom in the Python 3 standard library.

  21. How reviewing code makes me a better programmer!

    Amy Hanlon

    Many developers see code review as a way to keep code compliant and to reduce bugs, but code review can be so much more than that! In this talk, I’ll share how reviewing code became one of the most valuable ways for me to become a better programmer. I’ll cover how you can learn more from code review, how you can improve your skills as a reviewer, and how to influence your colleagues to give you better code review.

  22. Improving Your Flask APIs

    Thomas Peterson

    We'll take a look at the flask-restful and flask-restful-swagger packages and how they can be used to make your APIs simpler, cleaner, well-documented, and easier to extend.

  23. Introduction to HTTPS: A Comedy of Errors

    Ashwini Oruganti

    Given recent increases in hostile attacks on internet services and large scale surveillance operations by certain unnamed government organizations, security in our software is becoming ever more important. Through this talk, I'll give you an idea of how modern crypto works in web services and clients, look at some of the common flaws in these crypto implementations, and discuss recent developments in TLS.

  24. Introduction to Meteor

    Christie Ewen

    Meteor is an open source platform for building next generation web and mobile apps in Javascript. Meteor is powered for cross-platform apps (iOS, Android, web).

    Slides: http://www.slideshare.net/christieewen/intro-to-meteor-py-gotham-aug-1516-2015

  25. introduction to open and collaborative data analysis with pandas and IPython/Jupyter Notebook

    Melissa Lewis

    Data munging is typically an involved and noisy process, but pandas -- especially using the notebook format -- make it easy to share and reproduce the process of analyzing data, from munging to analysis and even exploratory visualization! In this talk you'll get a glimpse of the pandas workflow and some tips for getting the most out of its use in the IPython/Jupyter notebook.

  26. Introduction to pysparkling

    Sven Kreiss

    A native Python implementation of Spark's RDD interface.

  27. Introduction to the Pygame Library

    Piper Thunstrom

    Learn the critical building blocks of the Pygame Library, see how they fit together, then talk about some Python specific design patterns.

  28. Introduction to Topic Modeling in Python

    Christine Doig

    Topic models are a suite of algorithms that uncover the hidden thematic structure in document collections. These algorithms help us develop new ways to search, browse and summarize large archives of texts. This talk will introduce topic modeling and one of it's most widely used algorithms called LDA (Latent Dirichlet Allocation). Attendees will learn how to use Python to analyze the content of their text documents. The talk will go through the full topic modeling pipeline: from different ways of tokenizing your document, to using the Python library gensim, to visualizing your results and understanding how to evaluate them.

  29. Intro to Building Data Pipelines in Python with Luigi

    Adrian Cruz

    Luigi is a Python package open sourced by the folks at Spotify. It facilitates building out the workflows of working with data. You will learn about data pipelines and why Luigi helps out dramatically. This will be an introductory level talk, but all experience levels are welcome.

  30. Large scale non-linear learning on a single CPU

    Andreas Mueller

    This talk presents several methods for learning non-linear models on a single machine, where the dataset does not fit into ram. It will cover the hashing trick, kernel approximations, neural networks, and extreme learning machines (random neural networks). This will be a fairly technical talk, showing off some of the lesser known out-of-core capabilities of scikit-learn.

  31. Metaclasses and Decorators in the Wild: Ingesting Data With FeedEater

    Silas Ray

    FeedEater is a small library (https://github.com/Suitey/FeedEater) I wrote at TripleMint that we use to manage the interface between data sources with disparate formats and our DB. This talk runs through the basic principles involved and shows how the pieces fit together. If you are interested in Python metaprogramming but have never been able to see how to use it practically, this is a good example of using it in the real world.

  32. Modeling an Arithmetic Logic Unit in Python

    Joseph Mosby

    The Arithmetic Logic Unit is a fundamental component of any computer. Though its operations are commonly treated as a black box by most software engineers, in this talk we will peer under the hood of what's really going on inside a sample ALU.

  33. Mr. CKAN Goes to Washington

    Marianne Bellotti

    Open source projects face different problems at every level of their growth. For projects like CKAN success can be almost as frustrating as obscurity. A python backed open data platform, CKAN is used all over the world to catalogue and distribute public data. The United Nations uses it, the Whitehouse uses it, governments large and small hire developers to customize and fine tune their installations. Why then does so little of that work make it back into CKAN core? This talk explores the problems that mid-size open source projects face getting in-house professional developers to contribute back, and what project maintainers can do to encourage those using their code to share their improvements.

  34. Name Things Once

    Jack Diederich

    Naming things is hard so you should do as little of it as possible. Your coworkers will thank you for it.

  35. One, two, buckle your shoe

    Kat Chuang

    Programming is more than just typing, and takes more than talent. Producing software takes time, dedication, and teamwork. This talk gives guiding points for those learning to program and a demonstration of setting up a Flask web app.

  36. PyLLVM: A compiler from Python to LLVM-IR

    Anna Herlihy

    The LLVM Compiler Infrastructure Project provides a convenient, transportable intermediate representation (LLVM-IR) which can be compiled and linked into multiple types of machine-dependent assembly code. TupleWare is a new analytical framework built at Brown University that allows users to compile functions into distributed programs that are automatically deployed. TupleWare compiles user functions to LLVM-IR, and C++ code is generated and applied to the data through the distributed framework. This talk will go through the steps of writing a comprehensive Python front-end for TupleWare with a focus on the construction of a compiler from a limited subset of Python to LLVM-IR.

  37. Python As A Language

    James Powell

    What is (C)Python? What is it really? Is it just a scripting language or a glue language for connecting component or is it more? This talk investigates CPython internals in order to motivate a view of Python as a "system language."

  38. Python, Inc.

    Jessica McKellar

    Open source communities and startups have some important properties in common. They are highly resource-constrained and must work to engage and retain users in a competitive and ever-changing market. How can open source communities apply startup best practices? In this talk, we take on the role of CEO of Python, Inc. and ask ourselves what actually matters for growing and sustaining an open source community.

  39. Python Not Recommended

    Adam Forsyth

    At Braintree, we've moved away from using Python. We've always used Ruby as our primary language, but Python used to be the go-to choice for things where Ruby wasn't a good fit. I will discuss the problems we've had with Python, why we decided to move to other solutions, and what we've chosen instead. Finally, I'll talk about where we're continuing to use Python and what the future holds.

  40. Pyxley: Easy Web Applications with Flask and React.js

    Nick Kridler

    Flask and React.js are a great combination for building light-weight web applications. We've developed Pyxley to provide a simple framework for building web apps and reduce the need for writing custom Javascript.

  41. Scaling Graph Computations with Online Algorithms

    Andrew Kelleher

    There are a lot of ways to represent graphs, and a lot of interfaces and techniques for scaling them. We'll address how you might scale arbitrary operations on graphs by implementing a data stream that allows you to do your computations online.

  42. Scraping (some of) the NYPL Catalog: a story of Requests and BeautifulSoup

    Susan Steinman

    A foray into web scraping in Python

  43. Sharding Data for Fun & Profit

    Wes Chow

    The hash function is the veritable hammer for pounding a large array of engineering problems into submission. Want to shard your database? Draw a key from your data, hash it, and voila, instant deterministic load balancing! That’s simple enough, until you look more carefully at distributional effects, failure, and redundancy management. We’ll review well known (consistent hashing), not so well known (rendezvous hashing), and recent (shuffle sharding, copysets) work that goes a long way towards engineering more favorable failure scenarios.

  44. SQLAlchemy ORM for Beginners

    Jason Myers

    We'll explore how to get started with SQLAlchemy ORM. We'll learn how to build data models, connect to databases, how the session works, and perform CRUD operations.

  45. State of the library: matplotlib

    Thomas A Caswell

    A short summary of recent developments of matplotlib and how to write re-usable plotting code.

  46. Teaching Python in Middle School

    Meg Winston Ray

    There is no shortage of interest in bringing coding to the classroom. Schools have a wealth of ed tech products to choose from, and many organizations are willing to fund classrooms in this endeavour.

    So why aren’t more students learning programming? How are the gender and racial diversity gaps in tech industry being perpetuated in the classroom and what can do about it? Are block-based educational languages drawing students into computer science?

    A programming curriculum writer and teacher discusses the realities of bringing Python into the secondary classroom. We’ll explore the common pitfalls and obstacles that teachers and students must overcome, examine some effective approaches for classrooms with diverse learners, and discuss why Python is a great fit for the classroom.

    Bring a device to to collaborate and join the discussion.

  47. Terminal Whispering

    Thomas Ballinger

    The terminal emulators we run so many of our programming tools in are more powerful than we remember to give them credit for, and the key to that power is understanding the interface. This talk will cover terminal colors and styles, writing to arbitrary portions of the screen, handling signals from the terminal, determining the terminal's dimensions and scrollback buffer behavior.

  48. The Graph To My Hearduino

    Paul Logston

    This talk is about building an Arduino driven Electrocardiograph (EKG) machine. The majority of the talk will be focused on the Python wrapper used for streaming bytes from the Arduino. There will be a live demo.

  49. The New Basic App: Complex Data Aggregation in Flask

    Jarret Petrillo

    Flask, Twitter Bootstrap, and Python all working together make complex data curation projects feasible. Beginning with the basics we build a a lightweight application that does quite a bit. And build to a curious corollary of the information age: with so much out there aggregating and processing information could be the sole basis of a new enterprise.

  50. The Python Datamodel: When and how to write objects

    Aaron Hall

    We've been told to stop writing objects. We've been told to write more objects.

    In this talk, we cover the Python datamodel, when to begin writing objects, what methods to start with that leverage the Python data model, and how to use the "magic" methods of Python. This talk assumes you know a few of the basic builtin data structures of Python (dicts) and have at least passing familiarity with operators (+, -, * , /, in, etc...)

    Which should we be doing? When? How?

  51. The Yosai Project: Security Management for Any Application

    Darin Gordon

    Yosai is a security management framework. It is a port of Apache Shiro, written in Java and widely used today. Yosai encompasses Authentication, Authorization, and Session Management using a highly modular architecture. It features a simple, intuitive API that will help developers adopt robust security management for their applications in little time.

  52. Think of the Children: A methodology for measuring the effectiveness of adaptive learning applications

    Hillary Green-Lerman

    Adaptive learning technology is used to provide personalized learning experiences for students. A common implementation provides individualized follow-up assignments for struggling students. Using observed data, we show how to use bootstrapping and rejection sampling to create a valid comparative study of groups of students who do and don’t use adaptive technology, even when the samples are not uncorrelated.

  53. Time to Rhyme: The CMU Pronouncing Dictionary and You

    Allison Parrish

    I recently made a Python module called Pronouncing, which is an easy and fun interface for the CMU Pronouncing Dictionary. In this talk, I'll show you how to use the library for creative English text generation tasks: counting syllables, finding rhymes, and matching meter.

  54. Untangling Twisted: How We Scaled a Python Service for Online Publishers

    Brian Muller

    At OpBandit, we built a Python Twisted service that renders different versions of news content for rendering on top publishers across six countries. At a high level, whenever a reader requests a page on a publisher's website, our service selects from various versions of headlines and photos to deliver the collection of versions that we think a user is most likely to click. This requires decision making on the fly for each request with hard requirements for speed and reliability. This talk will cover how we used Twisted to scale our service to provide hundreds of millions of optimized pages / month for readers, as well as what it's like to attempt to scale real-time data science recommendation algorithms within Python.

  55. Using Graphs for High Quality Recommendations

    amit bhattacharyya

    Using a graph data structure and community detection algorithms to provide recommendations to a cluster of similar buyers.

  56. Using Networkx to Explore Pathfinding

    MaxBezahler

    In this talk we're going to cover using networkx to build a graph and then use various networkx algorithms to find characteristics about that path. We will cover: - Introduction to Graphing and Pathfinding - Where to find other materials including Pycon 2015 conference materials and websites with simulations - Creating a graph, creating static layout, displaying nodes and edge value - Using networkx for pathfinding specifically: dijkstra_path and astar_path - We'll go thru the algorithm used for dijkstra and astar (A*) - Quick discussion of new trends in path Finding: IDA*, theta* and phi* and Ant Colony Optimization algorithm Slides and code will be available on Github

  57. Using Python for Sarcasm Detection in Speech

    Rachel Rakov

    In this talk, I discuss my work using Python to create a system for sarcasm detection in speech. My goal in this task is to determine whether human intonation alone can be modeled to predict sarcastic speech. I first extracted speech samples from the titular character of MTV’s late ‘90s hit TV show “Daria”. Using crowdsourcing techniques to get the speech labeled for sarcasm, I created a corpus of speech that is annotated for sarcasm and sincerity. I used several Python toolkits to extract a number of acoustic features from this speech that are indicative of sarcasm. The first tool I used was Snack Sound Toolkit, a library for Python that does basic sound handling and analysis. I used tools in Snack to extract a baseline of basic acoustic features that have been found to be helpful in human sarcasm identification. I then used NumPy, SciPy, and NLTK to model prosodic contours, and applied these contours to the task of automatic sarcasm detection. This approach applies sequential modeling to representations of pitch and intensity curves obtained via k-means clustering. Using machine learning (specifically Weka’s SimpleLogistic (LogitBoost) classifier), this system is able to predict sarcasm with 81.57% accuracy.

  58. Voice programming: a how-to

    Evan Fredericksen

    Despite the many people who suffer from RSI, the subject of programming by voice is still a relatively unexplored one. Although there are numerous proof-of-concept demonstrations available online and many brilliant pieces of software that make voice programming possible, much of the configuration and learning of best practices are left to the user. This talk will cover what exactly goes into creating and using a voice programming environment.

  59. What Can I Do With "Deep Learning"?

    Kyle Kastner

    "Deep learning" is a recent rebranding and mixing of old and new methods in neural networks, graphical modeling, and optimization. We will discuss the applications of these approaches, how these methods are different than others for machine learning, and what recent advances in the field mean for people trying to solve problems in the real world.

  60. What's up with th@? Adding an Operator to CPython

    John Hergenroeder

    How do you add an operator to CPython? We'll use the recent addition of the '@' operator in 3.5a1 to answer that question and dig into the CPython internals in the process, touching on how the interpreter goes from source to execution.

  61. What the FORTRAN is ** Doing in Python ?

    en zyme

    Exponentiation is just extended multiplication, or is it? Only up to a point. In reality, Real numbers don't really exist, there are only a finite number of Integers, negative zero is not always the same as positive zero, and Complex numbers really are. All of which make exponentiation both subtle and computationally expensive. A retrospective and prospective of the intricacies of reification of 'number' and the occasional futility of mathematical operations in particular, **.

  62. Why doesn’t anyone use my library?

    James Robert

    When, why, and how to open source code, and how to get it into real-world use. Lessons learned working on Pydub (audio for humans, a la requests). It's grown to incorporate contributions from around the world, over 1000 stars on GitHub and the nicest API you'll find this side of the DAC.

    Slides: https://speakerdeck.com/jiaaro/why-doesnt-anyone-use-my-library

  63. Writing Winforms and WPF applications in Python

    Maksim Kozyarchuk

    Introduction to techniques for building Winforms and WPF applications with CPython