PyCon 2018
as the organisers put it
The PyCon 2018 conference, which will take place in Cleveland, is the largest annual gathering for the community using and developing the open-source Python programming language.
who it's for
Python application developers, data scientists and analysts, library and tool maintainers, engineering managers, QA and test engineers, site reliability and platform engineers
topics
Dask versus Spark performance; pandas data aggregation patterns; property-based testing with Hypothesis; behave BDD for Python; pipenv dependency management; asyncio with multiprocessing; Rust extensions for Python modules; CuPy for GPU NumPy workloads; Bayesian modeling with PyMC3; importlib.resources packaging; WSGI application performance; type-checked Python with typing
| title | author | length |
|---|---|---|
| Adapting from Spark to Dask: what to expect | Irina Truong | 28m |
Benchmarks show concrete wins: on a laptop 100M rows runs ~3 minutes on Spark versus ~40 seconds with Dask, and 1B rows drops from ~45 minutes to ~16 minutes… | ||
| All in the timing: How side channel attacks work | Philip James, Asheesh Laroia | 30m |
Shows that Python string == compares left to right so an attacker can recover an 8‑char secret in 144 tries by measuring response time, that Google Keysar HMAC… | ||
| Analyzing Data: What pandas and SQL Taught Me About Taking an Average | Alex Petralia | 26m |
Code examples in pandas and SQL show the concrete mistake: taking np.mean()/AVG() over raw rows yields 6.6 apples but aggregating by day yields 11 apples, a… | ||
| Augmenting Human Decision Making with Data Science | Kelsey Pedersen | 34m |
Data and concrete results: a styling app for Stitch Fix matches 3,000 stylists to customers, filters inventory, computes match scores, and shows ranked… | ||
| Behavior-Driven Python | Andrew Knight | 29m |
Shows how to write real Gherkin scenarios and glue them to Python step definitions using the behave framework, with a runnable GitHub example and pip install… | ||
| Beyond scraping: how to use machine learning when you're not sure where to start | Julie Lavoie | 25m |
Builds a system that extracts the publication date of almost any news article by framing it as supervised classification of DOM elements, using crowdsourced… | ||
| Beyond Unit Tests: Taking Your Testing to the Next Level | Hillel Wayne | 29m |
Uses property-based testing with Hypothesis to generate hundreds of inputs (and shrink failing cases) and uses dpcontracts runtime pre/postconditions to make… | ||
| Birding with Python and Machine Learning | Kirk Kaiser | 23m |
Bootstraps bird detection with transfer learning: uses Tiny YOLO (VOC-trained) via Darkflow to detect birds, then labels species with labelImg and augments… | ||
| Bowerbirds of Technology: Architecture and Teams at Less-than-Google Scale | Sam Kitajima-Kimbrel | 30m |
Compares decisions at Facebook Google Amazon Uber to practical tradeoffs for smaller teams, pulling concrete cases: Uber’s append-only sparse three-dimensional… | ||
| Building a Data Pipeline with Testing in Mind | Jiaqi Liu | 20m |
Concrete claim: build pipelines that are testable and monitorable using schemas, metadata, and dry runs. Tools used include protobufs for strict schemas… | ||
| Build Teams as an Engineer | Joyce Jang | 32m |
Starts by listing concrete steps: gather information, define a measurable focus, draft org boundaries, design a communication API and iterate. Identifies and… | ||
| Code like an accountant: Designing data systems for accuracy, resilience and auditability | Sophie Rapoport | 31m |
Claims that double-entry invariants catch bugs, that item-level reconciliation and coarser cash reconciliation trade cost for signal, and that append-only… | ||
| Code Reviews Using Art Critique Principles | Stacy Morse | 30m |
Argues that art-critique methods make code reviews faster, less toxic and more useful by insisting on concrete steps: pre-review checklist (identify work, run… | ||
| Coding through Adversity | Chris Schuhmacher | 28m |
Is released from prison after 17 years in 2017 and learns to code through Code.7370 / The Last Mile, builds a working Fitness Monkey prototype that logs clean… | ||
| CuPy: A NumPy-compatible Library for GPU | Shohei Hido | 30m |
CuPy claims a NumPy-compatible array API that runs on NVIDIA GPUs via CUDA and uses cuBLAS cuDNN cuSPARSE cuSOLVER cuRAND and NCCL to speed linear algebra and… | ||
| Debugging PySpark -- Or trying to make sense of a JVM stack trace when you were minding your own bus | Holden Karau | 26m |
Shows concrete patterns: search logs for the org.apache.spark.api.python Python exception, run Spark 2.2/2.3 to get better Jupyter tracebacks, and expect… | ||
| Deconstructing the US Patent Database | Van Lindberg | 22m |
A pipeline that downloads nine million patents (soon ten million), ingests the USPTO MySQL dumps and Google BigQuery exports, computes pre-trained word… | ||
| Demystifying the Patch Function | Lisa Roach | 37m |
Explains exactly how unittest.mock.patch replaces a target by name (examples with my_module.db_write and from-import vs import cases), when to use context… | ||
| Elegant Solutions For Everyday Python Problems | Nina Zakharenko | 33m |
Shows concrete patterns: a Money class implements dunder add and on-the-fly currency conversion so adding $ and € just works; a Server becomes iterable with a… | ||
| Exploring Deep Learning Framework PyTorch | Stephanie Kim | 43m |
Claims that PyTorch gives dynamic computation graphs built at runtime and lets code-run define backprop while TensorFlow uses static graphs defined before run… | ||
| Flourishing FLOSS: Making Your Project Successful | Anna Ossowski | 29m |
Shows concrete practices: a subscription funding model (Django REST Framework example: $15/month and $50–$400 for companies with advertising and 24‑hour… | ||
| How we designed an inclusivity-first conference on a shoestring budget and short timeline | Christopher Neugebauer, Josh Simmons, Sam Kitajima-Kimbrel | 31m |
North Bay Python builds an inclusivity‑first conference from scratch in under six months on a shoestring budget, proving specific choices matter: a downtown… | ||
| import time_travel: A Primer on Timezones in Python | David Gouldin | 41m |
Argues that timezone bugs are avoidable by using concrete tools and patterns: Python's datetime/TZInfo with the fold field for ambiguous times, dateutil's… | ||
| Listen, Attend, and Walk : Interpreting natural language navigational instructions | Padmaja Bhagwat | 28m |
Imagine you have an appointment in a large building you do not know. Your host sent instructions describing how to reach their office. Though the instructions… | ||
| Love your bugs | Allison Kaptur | 33m |
Two concrete debugging case studies: a recurring bit flips bug where a single flipped memory bit turns a 16+16 hash into 33 chars (we trace the flipped 17th… | ||
| Performance Python: Seven Strategies for Optimizing Your Numerical Code | Jake VanderPlas | 23m |
Seven concrete tactics for speeding numerical Python with a K‑means case study line profiling shows label computation takes 93% of time and vectorizing with… | ||
| Python for the quantum computing age | Ravi Chityala | |
Quantum computers are slowly turning in to reality more than 30 years after they were first theorized. The need for quantum computers have become clear as we… | ||
| Randomness in Python: Controlled Chaos in an Ordered Machine | Amanda Sopkin | 28m |
Shows a concrete exploit where user IDs seeded by a restart time give 60,000 possible seeds and allow predicted tokens and impersonation, contrasts the… | ||
| Reactive Programming with RxPy | Valery Calderon | 19m |
Shows concrete use of RxPy with a Tornado websocket calling the GitHub API, implementing observables, observers and subjects and observables to multicasts… | ||
| Software Library APIs: Lessons Learned from scikit-learn | Liz Sander | 27m |
scikit-learn exposes a small set of concrete abstractions — transformers, estimators, meta-estimators — that map cleanly to ETL, fit/predict and validation; it… | ||
| Strategies to Edit Production Data | Julie Qiu | 27m |
Five concrete strategies progress from maintaining a google spreadsheet of raw SQL edits to running Python scripts locally, copying them to an EC2/Jenkins… | ||
| Taking Django Async | Andrew Godwin | 40m |
Channels 2.0 makes Django async-native by adopting asyncio, ASGI and a redesigned channel layer, with a ~75% rewrite that runs in production. Key tools are… | ||
| The AST and Me | Emily Morehouse | 24m |
Python source parses to an AST that the compiler transforms into a control‑flow graph and immutable code objects (look at co_consts and co_code), then emits… | ||
| Trust the data to speak for itself | Opetunde Adepoju | |
All the data in the world is useless if you cannot understand it. EDA and data visualization are the most crucial yet overlooked stage in analytics process… | ||
| Thinking Outside the GIL with AsyncIO and Multiprocessing | John Reese | 31m |
Combines AsyncIO and multiprocessing to sidestep the GIL by running an event loop inside child processes, using multiprocessing queues, batching and optional… | ||
| Trio: Async concurrency for mere mortals | Nathaniel J. Smith | 32m |
Claims a concrete, simpler implementation of Happy Eyeballs using Trio primitives: async/await plus nurseries and cancel scopes, events and timeouts. Replaces… | ||
| Using Python to build an AI to play and win SNES StreetFighter II | Adam Fletcher, Jonathan Mortensen | 31m |
Uses a SNES emulator (snes9x + BizHawk) and Python glue to expose game state to OpenAI gym and trains a DQN via keras-rl and tensorflow. Acts every 20 frames… | ||
| Visual Testing with PyCharm and pytest | Brian K Okken, Paul Everitt | 30m |
Uses PyCharm with pytest to make TDD practical: a small "cards" CLI project on GitHub, 40 tests running in under a second, and a workflow that runs subsets… | ||
| "WHAT IS THIS MESS?" - Writing tests for pre-existing code bases | Justin Crown | 28m |
Practical steps for putting tests around messy, untested Python: pick concrete tools (pytest, pytest-django, pytest-cov, pytest-socket, factory-boy), write a… | ||
| Win back lovely API: GraphQL in Python | Keith Yang | |
RESTful has been the go-to choice of API world. Why another API approach? To support more data-driven applications, to provide more flexibility and ease… | ||
| A Bit about Bytes: Understanding Python Bytecode | James Bennett | 30m |
Explains what lives in .pyc files (the co_consts, co_varnames, co_code fields), shows how to map raw bytes to opname entries like load_fast and how dis.dis… | ||
| Bayesian Non-parametric Models for Data Science using PyMC3 | Christopher Fonnesbeck | 42m |
Introduces Bayesian nonparametrics with working PyMC3 code and real datasets: Gaussian processes for regression and classification, a latent-GP Poisson model… | ||
| Building a cross-platform native app with BeeWare | Russell Keith-Magee | 31m |
Claim: BeeWare lets pure Python apps run natively on desktop, mobile and web with the same codebase. Implementation uses Toga for native widgets, Briefcase to… | ||
| By the Numbers: Python Community Trends in 2017/2018 | Dmitry Filippov, Ewa Jodlowska | 26m |
Survey gathers over 10,000 responses and reports concrete shifts: 75% using Python 3 versus 25% on Python 2, Django is used by Django 41% of respondents while… | ||
| Colossal Cave Adventure in Python... in the browser! | Christopher Swenson | 42m |
Claims a Python interpreter runs the original FORTRAN IV as-is (PDP-10 quirks: 36‑bit words, five‑letter packed ASCII) and shows it executing via Batavia… | ||
| Controlling apples with snakes: Automating mobile apps with Appium | Nir Arad | 28m |
Demonstrates Appium controlling iOS devices from Python by building a small test app to enumerate Waves plugins, creating real-device sessions with desired… | ||
| Counter, Gauge, Upper 90 - Oh my! | Amit Saha | 26m |
Defines counters, gauges, histograms and shows a concrete Flask middleware writing metrics to CSV that records per-request latency, then uses pandas to group… | ||
| Dataclasses: The code generator to end all code generators | Raymond Hettinger | 45m |
PEP 557 dataclasses (in Python 3.7) generates __init__, __repr__, __eq__ and other methods so less boilerplate and higher‑quality defaults; it uses… | ||
| Data Visualization in Mixed Reality with Python | Anna Nicanorova | 19m |
Claim: augmented reality compensates human difficulty conceptualizing large numbers by mapping dollars to familiar scales. Demonstrations render Fortune 400… | ||
| Democratizing Distributed Computing with Dask and JupyterHub | Matthew Rocklin | 32m |
A cloud deployment combines JupyterHub, JupyterLab, XArray and Dask on Kubernetes to let scientists run real analyses: a 70 GB sea‑level array is split across… | ||
| Don't Look Back in Anger: Wildman Whitehouse and the Great Failure of 1858 | Lilly Ryan | 30m |
1858 project tries to run a ~2,000 mile gutta‑percha–insulated cable and it goes live with cannons and fireworks then dies after about three weeks when the… | ||
| Easy 2D Game Creation With Arcade | Paul Vincent Craven | 30m |
Arcade is a Python 3.6+ library using OpenGL for 2D games, demonstrating concrete code: window creation, primitive drawing, sprites and sprite lists, and a… | ||
| Fighting Gerrymandering with PyMC3 | Colin Carroll, Karin C. Knudson | 30m |
Bayesian hierarchical ecological inference (King‑Rosen‑Tanner style) gets implemented with PyMC3 implementation to produce precinct‑level posterior… | ||
| Fighting the Good Fight: Python 3 in your organization | Jason Fried | 31m |
Claim: Facebook goes from "impossible" in 2014 to a majority of Python 3 usage by 2018, with ~55% of entry points and 73% of lines converted, and an internal… | ||
| Get your resources faster, with importlib.resources | Barry Warsaw | 29m |
importlib.resources provides concrete APIs like read_binary, read_text and context-manager path that avoid pkg_resources import-time overhead, work with… | ||
| Graph Databases: Talking about your Data Relationships with Python | Nicolle Cysneiros | 46m |
Shows when a graph store actually helps: relationships are first-class so traversal queries run faster while property scans do not, an academic benchmark… | ||
| How Netflix does failovers in 7 minutes flat | Amjith Ramanujam | 32m |
Netflix claims it can shift all 100M+ users under seven minutes by prebuilding nimble shadow clusters that Python orchestration (Flask, Redis, async queues)… | ||
| HOWTO Write a Function | Jack Diederich | 42m |
Argues that a good function is small and predictable: gather inputs-transform-output at the top middle and bottom, validate early with asserts and early… | ||
| How to Write Deployment-friendly Applications | Hynek Schlawack | 44m |
Argues that apps must be environment‑agnostic and shows a working Pyramid web app wired to start via runapp.sh, served with gunicorn, logs to stdout, and… | ||
| Inside the Cheeseshop: How Python Packaging Works | Dustin Ingram | 25m |
Traces concrete history and engineered fixes: why setup.py executes arbitrary code and blocks reliable dependency discovery, why wheels vs eggs matter and how… | ||
| One weird trick to becoming a better software developer | Esther Nam | 28m |
Claim: cognitive empathy and emotional empathy are the single underrated skills that make developers reliably ship the right product on time. Evidence: five… | ||
| Oops! I Committed My Password To GitHub! | Miguel Grinberg | 30m |
Accidental secret commits are common; the fix is immediate revocation of the exposed token and rotation, not fiddling with Git history. Prevention is concrete… | ||
| Pipenv: The Future of Python Dependency Management | Kenneth Reitz | 36m |
Pipenv claims to replace pip + virtualenv by creating a human-editable Pipfile and a machine-readable Pipfile.lock that pins transitive versions and hashes… | ||
| Practical Sphinx | Carol Willing | 27m |
Practical steps for Sphinx: combine reStructuredText Markdown and Jupyter Notebooks using nbsphinx and pandoc, keep conf.py as executable config, run make… | ||
| Programming microbes using Python | Janet Matsen | 25m |
Zymergen edits microbial genomes, builds variants with robots and tests them in 96‑well plates, then scales winners to large tanks; the data pipeline uses… | ||
| Python 2 to 3: How to Upgrade and What Features to Start Using | Trey Hunner | 26m |
Python 2 reaches end of life in 2020 and upgrade strategy choices—gradual (support 2 and 3), sudden (switch at once), or rewrite—are compared with concrete… | ||
| Python 3: ten years later | Victor Stinner | 43m |
Ten years of concrete results: a gradual migration strategy replaces all‑at‑once porting, new tooling and soft‑transitions make incremental work feasible, and… | ||
| Python across the USA: This is the Bus. | Justin Myles Holmes | 25m |
A converted International 3800 school bus carries flexible solar panels on a 55 foot run and averages about 500W out of ~700W rated; four 6V lead‑acid… | ||
| Python Data Sonification for Science and Discovery | Erin Braswell | 26m |
Python code converts real datasets into MIDI, produces playable files, and demonstrates that sonification reveals patterns people miss visually. Examples load… | ||
| Python, Locales and Writing Systems | Rae Knowler | 35m |
Python 3 makes strings Unicode by default but lots of real problems remain: Turkish dotted versus dotless I mis-capitalizes in core code so either ship a hand… | ||
| Python Performance Investigation by Example | Matt Davis | 31m |
A brute force Python solution that simulates the firewall runs through 3.8 million steps and takes about 1,012 minutes, then a math rewrite that computes… | ||
| Reinventing the Parser Generator | David Beazley | 45m |
Describes a modernization that rewrites PLY into SLY, replacing docstring hacks with real lexer+LALR(1) grammar classes that abuses modern metaclasses and uses… | ||
| Secrets of a WSGI master. | Graham Dumpleton | 33m |
Argues that WSGI still meets most needs and shows concrete fixes: mod_wsgi-express and ability to pip install mod_wsgi remove old installation pain, Django… | ||
| Solve Your Problem With Sloppy Python | Larry Hastings | 30m |
Shows concrete hacks and code: a mass rename deep dive that uses hard links and string.partition to fix 60 filenames, a replace/enumerate trick to inject… | ||
| Surviving (and thriving!) when you are overloaded | Scott Triglia | 27m |
Claim: overload gets fixed by doing less and delegating deliberately. Practices include a weekly symptom checklist (track late nights, sleep trouble, stalled… | ||
| The human nature of failure & resiliency | VM Brasseur | 45m |
Distills roughly 3,500 pages of failure research into a 40-minute checklist of concrete tactics: pre-mortem and post-mortem prompts, how to list and verify… | ||
| The Journey Over the Intermediate Gap | Sara Packman | 27m |
Finishing tutorials doesn’t move someone past the hard middle; real progress comes from concrete practices: actually shipping projects, asking mentors for… | ||
| Visualizing Algorithms with Python and Programmable LEDs | Christopher Beacham / Lady Red | 30m |
Hardware-level how-to and concrete demos: APA102 (dotstar) LED strips drive over SPI from a Raspberry Pi so full CPython controls pixels; power planning is… | ||
| What is a Python Core Developer? | Mariatta Wijaya | 36m |
Being a Python core developer means holding commit rights and responsibility for about 17 repositories, with current membership at 89 core developers for a… | ||
| You're an expert. Here's how to teach like one. | Shannon Turner | 28m |
Practical, workshop‑ready methods and evidence: a curriculum used to teach more than 3,000 women with a train‑the‑trainers program, concrete exercises like… | ||
| A practical guide to Singular Value Decomposition in Python | Daniel Pyrathon | 31m |
Explains how SVD produces matrix factorization and item similarity recommendations, implements a simple movie recommender on the MovieLens data using Python… | ||
| Automating Code Quality | Kyle Knapp | 30m |
Automates manual review steps by wiring flake8, pylint, and coverage into a local dev workflow and CI so commits must pass a make PR check before merge; shows… | ||
| Big-O: How Code Slows as Data Grows | Ned Batchelder | 29m |
Big‑O explains how code slows as data grows and shows concrete tradeoffs using Python lists, dicts and sets and hash functions. Examples: counting is O(n)… | ||
| Clearer Code at Scale: Static Types at Zulip and Dropbox | Greg Price | 30m |
Companies report concrete results and a clear playbook: adopt mypy and run it in CI, use runtime tools like MonkeyType or pyannotate to draft annotations… | ||
| Efficient shared memory data structures | Claudio Freire | 27m |
Claims that large read-only data can be efficiently shared across processes by placing C-like schemas into memory-mapped files and exposing lightweight proxies… | ||
| Effortless Logging: A deep dive into the logging module | Mario Corchero | 30m |
Deep dive into Python’s logging module explains exactly what happens: logger creates a LogRecord with context, handlers emit to streams or files and can send… | ||
| How We Do Identity Wrong | Amber Brown | 32m |
Claim: identity fields are wrong by design — systems ask unnecessary questions, serialize names and genders poorly, and leak long-lived data. Evidence: Django… | ||
| Learning From Failure: Post Mortems | Alex Gaynor | 30m |
Explains how to run a blameless post-mortem that turns a 17‑minute site outage (one example) and a kube cluster scale.sh mistake that causes ~1 hour total… | ||
| Pumping up Python modules using Rust | Vigneshwer Dhinakaran | 31m |
Claim: Rust lets Python gain memory-safe, ahead-of-time speed by compiling extensions into dynamic libraries and calling them over a C ABI. Examples: a… | ||
| Systemd: why you should care as a Python developer | Alvaro Leiva Geisse | 27m |
Shows concrete systemd moves a Python app can use: use socket activation so systemd listens and passes file descriptors, spawn transient units instead of… | ||
| The Hare Wins the Race: Getting the most out of RabbitMQ in distributed applications | Steven Sklar | 29m |
Overview of concrete takeaways and demos: RabbitMQ basics with direct/topic/fanout routing, AMQP libraries shown (pika, kombu, librabbitmq), and Celery’s… | ||
| There and Back Again: Disable and re-enable garbage collector at Instagram | Zekun Li | 24m |
Instagram measures the problem with perf profiling, finds garbage collection causes page faults that trigger copy‑on‑write and costs about 150 MB per process… | ||
| Type-checked Python in the real world | Carl Meyer | 32m |
Type annotations catch whole classes of bugs, remove guesswork about what functions accept and return, and let tests focus on logic rather than type space. The… | ||
| Types, Deeper Static Analysis, and you | Pieter Hooimeijer | 28m |
Describes taking type annotations and a type checker, adding a call graph and interprocedural taint tracking that computes function summaries to catch… | ||
| User focused API Design | Renato Oliveira | 27m |
Argues that a Web API is a user interface and applies UX methods concretely: create personas, a QuickStart and documentation-as-onboarding, use prototypes and… | ||
| nothing matches | ||