A Plug for Plugins
For all software, scaling the development process often poses a problem before scaling performance. Engaging more developers creates code contention and bugs, so all growing projects need an API for code integration. Call them extensions, modules, or plugins, it’s time we gave them their due.
A Python and a Gopher walk into a bar - Embedding Python in Go
You often hear of projects porting between Python & Go, but rarely about apps using both. The Datadog Agent is written in Go, but maintains a Python plugin system. We’ll share lessons learned about cgo, the GIL & other surprises we found as we bridged multiple languages in a single app.
Algorithmic fairness and algorithmic discrimination
Data is a reflection of our society, and as such, it contains the biases and inequalities present within. In this talk, I present the idea of algorithmic fairness and various metrics for measuring the level of discrimination in a model and statistical methods for mitigating the effects of bias.
An Introduction to the Raft Distributed Consensus Algorithm
Computing infrastructure is becoming increasingly distributed, but how do these systems work? This talk will introduce the Raft distributed consensus algorithm as implemented in Python. It will cover how Raft works, and how it solves the problem of replicating data across multiple nodes.
Automated testing with pytest and fixtures
176 functional tests. 133 unit tests. 5 browsers. How to keep test runs organized? Pytest and fixtures!
Automated Video Editing with Stitcher
Creating video in a high-volume environment involves many tasks that are repetitive. A scriptable editing service can do these tasks instead. Stitcher is a domain language for describing sequential and parallel editing operations on videos to a service built with moviepy, marshmallow and ffmpeg.
Avant-Garde Regular Expressions
Don’t settle on being just regular! In this fast-paced talk, you will learn how to create advanced regular expressions and powerful, unconventional nuances to using them.
I will introduce little-known techniques with many code examples, best practices and even historical origins of the name.
bqplot - Seamless Interactive Visualizations in the Jupyter Notebook
bqplot is a d3-based plotting library that offers its functionality directly in the Jupyter Notebook in which every element of a chart is a widget that can be bound to a python function. This means that even a novice can use bqplot to build full scale web applications with 10 lines of Python code.
Build your own "Not Hotdog" deep learning model
During the latest season of HBO’s Silicon Valley, a few characters create a “Shazam of food”-like app that identifies hotdogs (or not hotdogs) from photos. In this talk, we’ll walk through the code and concepts that power this type of app (i.e., convolutional neural networks and transfer learning).
Building a “Pun Generator” in Python
How do we tell how similar two words are? In spelling this can be tricky, in pronunciation even trickier. This talk will cover some important NLP tools (edit distance, phonetic representation, part-of-speech tagging) with the goal of building the beginnings of a “pun generator.”
Code Review, Forwards and Back
Sumana Harihareswara, Jason Owen
Your team’s code review practices cause ripple effects far into the future. In this play, see several ways a single code review can go, then fast-forward and rewind to see the effects – on codebase and culture – of different code review approaches.
Confessions of a Python packaging noob
Learning to package Python modules for distribution wasn’t easy. Watching my repo become monolithic and unmanageable was even harder, so I recently bit the bullet and created my first package. I’ll share what I learned along the way.
Context propagation for Python concurrency models
Asynchronous Python can dramatically improve app performance & is gaining popularity among web frameworks. This talk shows how to automatically handle request data in your applications, eliminating the need to manually pass context objects to every concurrent function.
Create Single Python Executables for Easy Deployment
Learn a unique solution that coordinates two build tools to speed up development by packaging and deploying your Python applications seamlessly as single executables. You will see how Bazel coordinates Python packages, and how Pex bundles those packages together into a single executable.
Creating a Bittorrent Client using Asyncio
The purpose of this talk is explain the BitTorrent protocol and relevant Asyncio API needed to create a BitTorrent client that can actually download a “.torrent” file. The BitTorrent application will be built and presented as a set of steps to build a program that can download a file.
Darth Linguo, building an ungrammatical corpus by corruption
Pablo González Martínez
This research project seeks to generate ungrammatical sentences with specific syntactic violations to be used in the testing and refining of language models for NLP systems. The pipeline integrates several language processing tools to create dark corpora and test the sensitivity of language models.
Dask for task scheduling
Dask is a library for parallel and distributed computing for Python, commonly known for parallelizing libraries like NumPy and pandas. This talk discusses using Dask for task scheduling workloads, such as might be handled by Celery and Airflow, in a scalable and accessible manner.
Edward - Probabilistic Modeling Made Easy
As data scientists we want to find hidden patterns in data and probabilistic modeling let’s us do just that. Edward makes probabilistic modeling easy and in this talk you will learn how to use Edward to fit Bayesian neural networks and other complex models to real data. (edwardlib.org)
Everything You Ever Wanted to Know About Web Authentication in Python
Want to learn how web authentication works? How your login information is transmitted from a web browser to a web server, and what happens behind the scenes? How authentication protocols actually work?
By the end of this talk, you’ll be intimately familiar with web authentication in Python.
Fighting Human Trafficking with Code
Human trafficking remains a massive problem even today. Traffickers rely on technology to operate, and programmers are starting to use technology to fight back. Learn how software and data analytics are empowering human trafficking investigators and what a Python programmer can do to join the fight.
Finding the narrative in networks with python
I will demonstrate how taking the view of communities of people, dolphins, bacteria and financial systems as networks can help us understand them better. This will be an interactive coding session where we will graph and analyze networks using Networkx and identify the stories that they tell.
Fixing the Tech Interview
James Bennett, Nicole Zuckerman
Technical interviewing is a mess. Companies complain that they can’t find qualified developers, but qualified developers can’t get hired! This talk will dive into what’s gone wrong in the interviewing and hiring process, and some ideas for how to fix it.
Fixing web data in production: best practices for bad situations
In a perfect world, all of the data underlying your web app is accurate, complete, and error-free. But in the real world, we sometimes need to “fix” production data. This talk is about how to update live data as safely and quickly as possible.
From Monolithic to Serverless with AWS Step Functions
Aside from proofs of concept, how are you realistically supposed to put Serverless into practice? Hear how Yelp has been moving a 10 year old codebase from tangled spaghetti toward serverless using AWS Step Functions (SFN). Learn SFN as infrastructure and how to incrementally move to Serverless.
Functions Within Functions: An Intro to Decorators and Closures
Decorators are very useful, but not widely understood. As functional programming patterns become more mainstream, understanding decorators and closures is a great skill to have. We’ll go over how both decorators and closures work, and some useful decorators in Python’s standard library.
High Performance Microservices
Python Microservices have many advantages, but raw performance isn’t typically one of them. We’ll break down the sequence of events in the client-server request model and discuss how various architectural choices affect performance with the goal of minimizing total response time.
How to Identify, Train and Grow Junior Developers
If your company is smaller than Facebook, you know that finding experienced developers is both hard and expensive. At the same time, many talented people fall through the cracks of corporate recruiting. In this talk, you’ll learn how to find people whose skills will grow along with your company.
import madness # how to implement mergesort from scratch using only import statements
You should never do it, but it’s possible to implement an entire mergesort algorithm in Python from scratch using only import statements.
By walking you through how it’s done, I’ll trick you into understanding what actually happens when you import in Python and teach you how to banish ImportErrors.
Indexing all the things: Building your search engine in Python
Python is an excellent language for building a search engine. However, indexing data for use in a search engine is challenging when both your database and the search index must sync. Elasticsearch exist for creating search engines initially, but you need a custom solution to keep them sycned.
Intellectual Property for Engineers
Intellectual property is everywhere in software, especially in open source. From licenses to copyrights, a working knowledge of IP law can help you navigate the FOSS world more effectively as either a developer or user.
Keep On Mockin' In The Real World
This talk is an example-led romp through some of the trickier aspects of mocking and patching. It picks up where a beginner’s guide leaves off and looks at the sort of problems you are likely to face when writing tests for the kind of real code that is currently in your codebase.
Loop better: a deeper look at iteration in Python
What’s the difference between an iterable, an iterator, and a generator? Do you know how to create infinitely long iterables?
Come to this talk to learn some of Python’s slightly more advanced looping techniques.
Machine Music: Exploring Machine Learning By Generating Music Or How To Teach A Computer To Rock Out
Gabe Levine, Jonathan Arfa
Want to learn about Machine Learning and Recurrent Neural Networks? Want to also make music? Me too! This talk is a beginners’ exploration of python machine learning frameworks to build a music generating algorithm.
Make mind-bending, interactive 3D projects with TouchDesigner and Python
TouchDesigner is a programming platform for creating real-time 2D/3D projects with tools like the Kinect and Oculus Rift. Fortunately for us, it uses Python as its built-in scripting language! I’ll give a demo of TD and leverage Python to generate interactive 3D media using data from Websockets.
Managing Complexity: Config As Code, Custom Ansible Modules, and You
We will discuss what ansible is and how to write a custom module for it, how to express config as code, and techniques for testing config as code. The talk will use a real-life case study (postgres administration) to create the narrative for why this matters and how to put these pieces together.
Monkey Patching My Life: Being a Trans Python Developer
What exactly could runtime modification and one woman’s transition have in common?
Music Synthesis in Python
Python has become a one-stop-shop for everything audio - from cutting edge digital signal processing packages to music synthesis and music composition packages. The goal of this talk to provide attendees with the knowledge of the fabulous audio analysis and music creation tools available in Python.
Natural Language Processing from Scratch
Bruno Gonçalves, Noemi Derzsy
The advent of sophisticated online services, has resulted in an unprecedented generation of textual content making NLP a fundamental tool in any data scientists toolkit. Here we introduce the rudiments of Natural Language Processing, from counting words to topic modeling and language detection.
Next Level Testing Revisited
You’ve written your unit tests and your integration tests. And yet, you’re still finding bugs in your code. In this talk we’ll cover advanced types of testing that helps you write higher quality code with less bugs.
Nim: A New Option for Optimizing Inner Loops
Z. D. Smith
For performance-critical components of a Python program, a programmer’s first choice is often to embed a shared library written in C. Nim is an expressive, modern language that compiles to C and can be used to provide a speed-optimized core to a Python module.
Psychology of Estimation: Faster is not always better
In 1979, Daniel Kahneman and Amos Tversky coined the term “Planning Fallacy”. When you look at the software development you can see the same phenomena. In this talk, Amin explains the psychology of estimation. He walks us through the red flags that we can look for to spot Planning Fallacy.
PySHED: a Python framework for Streaming Heterogeneous Event Data
Christopher J. Wright
We present a streaming data processing library tailored for the heterogeneous data which comes from scientific experiments. Our library emphasizes data provenance, retrieval, and pipeline flexibility. We will discuss the application of this library to materials experiments at an x-ray synchrotron.
Python for Education: Emulating x86 Assembler on the Web
Emu86 is a browser-based interpreter for x86 assembly language written in Python, using the Django framework. It allows code-stepping, displays registers, flags, memory, and the stack, and provides online help for all instructions. It is a great learning tool for introducing students to assembler.
Running Vintage Software: PyPI's Aging Codebase.
Ernest W. Durbin III
The Python Package Index, 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.
Scaling Sparta: Military Lessons for Growing A Dev Team
Scaling systems is hard. Scaling people? That’s significantly harder. So how do you scale a team of two to twenty? The answer starts over 2,000 years ago in Sparta.
This talk will focus on 3 distinct military organizations and apply the lessons learned to our development teams and organizations.
Shipping secret messages through barcodes
Have you ever wondered what those seemingly arbitrary black and white lines on your package mean? Encoding information in plain sight is an art form and barcodes lend themselves to go about it completely unnoticed. Let’s take a deep dive into printing barcodes and shipping labels using Python!
Solving a crossword puzzle the hard way
I set out to write a program that can solve the New York Times crossword through natural language processing. Using the Natural Language Toolkit (NLTK) and spaCy, my program parses the clues, generates a set of candidate answers, then narrows them down based on word length and intersecting letters.
Start Being Static with MyPy
Static typing in Python is something that can help make your multi-contributor python projects more scalable, testable, and self-documenting. This talk will discuss how to start using MyPy for gradual static typing in your code base and cover lessons learned from implementations at Spotify.
Spark Streaming for World Domination (and other projects)
Learn how to use Python to bend real-time data streams to your will and become a data science hero. We’ll cover the basics of Python big data wrangling with Spark’s powerful Streaming API and pyspark, exploring real-time Twitter data and applying some machine learning magic, just for kicks.
The 8 things that happen at the "." between an object and the attribute
We rarely think about the dot “.” between our objects and their fields, but there are quite a lot of things that happen every time we use one in Python. This talk will include the commonly known functions, (dict, getattr, etc), but especially focus on the Descriptor Protocol.
The Evolution of API Design: from RPC to GraphQL
This talk attempts to lay bare the lessons learned from 60 years of API development, from RPC to REST. With mounting pressure from mobile and distributed computing, RESTs viability is waning. This talk will present emerging designs like GraphQL as a post REST paradigm (but not a silver bullet).
The Fastest FizzBuzz in the West: How to Make Your Own Programming Language
In this talk, you’ll learn how I built DIVSPL, a tongue-in-cheek domain-specific language, which is particularly good for implementing FizzBuzz, and as quickly as possible. Along the way, you’ll learn about lexers, parsers, and grammars, and in the end, you’ll know how to build your own language.
There's a sign for that!
Ever wonder how to be more visually accessible to those around you? American Sign Language (ASL) is the main form of communication for many deaf Americans, yet it is not widely known in the hearing community. Learn how to convert your speech to text and then to sign to be more inclusive!
Those Who Care, Teach!
Nothing’s better than helping someone learn a concept: regex, build tools, or running their first script ever! Unfortunately, teaching is hard! For many, going beyond show-and-tell is just too intimidating. I’ll teach you tips, tricks, & tools I’ve learned teaching Python to thousands of people.
Threat Modeling Python Web Apps written with Flask and Django
Ever wanted to know how your web app can be compromised? Wonder no more. In this talk, we’ll build a threat model for realistic Flask and Django apps. We’ll learn how to spot potential weak points, where to spend time on security improvements, and how to discover breaches before it’s too late.
Tracing the flow of knowledge using Pyspark
Jessica Cox, Corey Harper
Scientists are eager for feedback on their work. What better place to look than the sentences that cite their discovery? Join us for a tutorial in Pyspark, where we explore NLP techniques using a CC-BY corpus of scientific journal articles to understand why and how literature is being cited.
Try-Monads With Big Data Using PySpark
Stream data processing is a complex and challenging process. Data is often imprecise and murky at best. How do we reconcile these two facts?
The answer is: Try-Monads.
Come learn what a Try-Monad and see the code necessary to implement and use one within your PySpark projects.
Valuing Job Offers - Finance 101 with Python
Aaron Hall, MBA
We get lots of pitches to come work for various firms.
How should we value these pitches? How does our choice today affect our lives in the future?
This talk uses Python and some introductory financial theory answer these questions.
When to avoid the subway: using python to make your commute slightly less terrible
You don’t have to know python to tell that the trains are getting worse. Fortunately, a wealth of data is available for us to predict how bad trains are likely to be at any particular time. While we can’t fix the trains, we can identify factors that make delays more likely and work around them.
Why you (!) should teach kids how to code
Tobias "Tobi" Schraink
Learning how to code is ever more important and the more kids code, the better. But what can you get out of teaching kids? Why it will make you better at your job, and what opportunities there are in NYC, all in one talk.