PyCon US 2012
PyCon is the largest annual gathering for the community using and developing the open-source Python programming language. PyCon is organized by the Python community for the community. We try to keep registration far cheaper than most comparable technology conferences, to keep PyCon accessible to the widest group possible. PyCon is a diverse conference dedicated to providing an enjoyable experience to everyone. Our code of conduct is intended to help everyone maintain the PyCon spirit. We thank all attendees and staff for observing it.
PyCon has an amazing variety of speakers, subjects and keynote speakers
- March 7, 2012
- Number of videos:
FOSS@RIT is an applied research lab at Rochester Institute of Technology focused on promoting free/open source software and open web technologies. Students and staff will discuss the evolution of the lab in general, and the RIT Fedora Remixerator - a web application running on Django that allows users to create an RIT-themed Fedora LiveCD.
Between choosing technologies, bootstrapping your company and product and hiring the critical early team, startup CTO's have their hands full. I've done it many times, and over the years I have honed my view of how to build something new from scratch. We'll focus on selecting tools and technologies, and on my journey to Python as the core of my newest company.
An introduction into the world of 508 compliance.
Generating a Compiled HTML Help (CHM) file is often necessary when distributing applications on Microsoft Windows platforms. However, many developers may dislike authoring HTML and/or cannot use Microsoft’s help tools. preshrunk-cotton streamlines the creation of CHM files by allowing the author to quickly write documentation in Textile markup and build the help file on almost any platform.
Bump Technologies’ Jamie Turner explains Diesel, an open-source evented networking framework, and how it's used at Bump, an Android and iOS app with over 70 million downloads.
The Analysis and Annotation Engineering group at the Broad Institute uses cpython and jython as fundamental technologies to help sequence, analyze, and publish hundreds of bacterial and viral genomes every year. This poster outlines how we use python to allow our small team to accomplish big things.
Formed in 2010, the PSF Sprints committee set out to support local communities getting together to make great software by funding their sprints with up to $300 USD. No matter the project, the PSF wants to help you contribute to the Python ecosystem. Come see what we're doing, how we're doing it, who we've supported, and see how you can take part as well.
Recently, many projects have been developed to make Python useful to do quantitative finance research. We proposed us not only to show you the integration of these tools to perform time series analysis and modeling, but also to show you how we can search for cointegrated pairs of asset and set up a statistical arbitrage strategy - pairs trading - to get potential profit from financial market.
Python has provided a suite of tools required for our Lagrangian Particle Modeling Framework that is used for simulation of atmospheric transport. The Python language is used for generating input files for our FORTRAN codebase, using f2py to control several aspects of running the model and reading output, and dynamically generating content with matplotlib for web-display using Plone.
Indico is an open source CMS developed at CERN and currently used in more than 90 scientific institutions world-wide. Indico provides a multitude of features to conference/meeting organizers, merging the capabilities of a powerful CMS with a calendaring layer, thus allowing users to keep track of past and future meetings, and to quickly access all the resources concerning a particular event.
Godfrey Ejiroghene Akpojotor, Louis Ehwerhemuepha Pervading of computer activities into the teaching/learning process and research make them constitute a third pillar in science and engineering (S & E) in addition to theory and experiment. Python African Computational S & E Tour is to ease the learners into programming with Python and to use it for modeling, simulation and visualization to aid teaching/learning process and research in Africa.
This poster demonstrates the Python based data analysis and visualization in atmospheric sciences with particular focus on modeled and observational aspects of marine clouds.
Location has become mainstream in society and computing. Developers are being tasked with working with spatial data of varying formats. Lucky for Python developers, there are many packages and libraries that can help us make sense of and utilize spatial data, and this poster will explain some of those options.
The Chandra X-ray Observatory has been producing significant astronomical discoveries since its launch by NASA in July of 1999. The Chandra operations team uses Python for predictive thermal modeling of the spacecraft to maintain a safe thermal environment. This poster describes the Xija modeling framework that is used to create, calibrate, and compute these thermal models.
Do you have what it takes to get to the top of http://twistedmatrix.com/highscores?
ProofCheck is a set of Python scripts which parse and check mathematics written using TeX. Its homepage is www.proofcheck.org. Unlike computer proof assistants which require immersion in the equivalent of a programming language, ProofCheck attempts to handle mathematical language formalized according to the author's preferences as much as possible.
Computational tools are an integral part of the modern drug-discovery process. At NIBR, we leverage Python to great success in all stages of drug discovery. Not only can we easily deploy new tools to our scientists easily using tools like Django, but Python's approachability (that "fits your brain" character) allows scientists with no programming experience to start coding themselves!
Have you developed a mathematical model or computational / visualization algorithm? Your algorithm could be useful worldwide to people who face a real- world problem but do not want to write code. Professionals in industry, scientists in other fields or researchers in developing countries can quickly apply your work to their domain with a web-based cloud-computing platform like CrossCompute.
PyMC implements a suite of Markov chain Monte Carlo (MCMC) sampling algorithms making it extremely flexible, extensible and applicable to a large suite of statistical modeling problems. PyMC's clear, concise syntax allows scientists to flexibly implement Bayesian models without hand-coding samplers.
In this poster session, we shall review how Python can be used to control and program Aldebaran's humanoid robot NAO.
A poster session for a hands-on demo of "BitbeamBot". It started as an art project, but it has a much more serious practical application: mobile web testing. To trust that your mobile app truly works, you need an end-to-end test on the actual device. BitbeamBot is an Arduino-powered open-source hardware CNC robot that can test any application on any mobile device.
Before Python, Guido was a contributor to the ABC language and environment. ABC was designed to teach programming, and introduced many "Pythonic" ideas: integrated dicts and tuples, structure by indentation, strong typing without declarations etc. With high demand for Python in education, the legacy of ABC is more relevant than ever as we design courses and environments for learners.
CScope has been around for years, and is a very useful tool to get a handle on C source code. Pycscope is an attempt to bring those benefits to the world of Python. Unfortunately, the existing version is woefully out of date. We take a walk through an attempt to update it, correct some flaws and make it more generally useful to us, while giving us a view into the Python parser.
This poster discusses the development of the CuiBono "political ad truth detector" app, from concept, to hackathon, to launch. The poster also talks about Python's prominence at the Philadelphia Random Hacks of Kindness hackathon (Winter 2011)
From just a gleam in founder Chris Webber's eye to a full tilt media hosting project supporting photos, HTML5 video, and more, the road to federation has been a wild ride so far. Come talk to us about the challenges, the fun and the future.
RedHat talks about OpenShift.
There are currently multiple methods for packaging, distributing, discovering, and installing Python software. This presentation will discuss the limitations of the current methods, the efforts to standardize Python packaging, and practical advice for developers to add support for the new packaging library, distutils2 ("packaging" in Python 3.3+), to their software.
On February 3rd, 2011 the world ran out of the IPv4 addresses that we know and love. Clearly the Internet has survived even though hardly anyone has deployed IPv4's successor, IPv6. Drop by to learn about what IPv6 is, why you should deploy it and some of the hurdles to deployment.
This poster will cover a description of the HTSQL query language (http://htsql.org).
Traditional solutions for data and graph analytics tend to be highly fragmented, and take the form of stand-alone frameworks. In this poster session, we shall describe our approach that is centered around a suite of advanced parallel primitives embedded within SPM.Python. These primitives augment the serial Python language with concepts like parallel generators, emitters and exceptions.
While the Tor client software itself is written in C, there's more to the Tor project than just the core client. Come see how the Tor project uses Python for network analysis, metrics, and various front- and back-end services.
The Artemis Project is a summer program to introduce high school girls to the problem-solving skills that are at the core of computer science. As coordinators, we found that there is a lot of undiscovered talent and enthusiasm for CS in the younger generation. Our poster is meant to encourage discussions on intuitive ways to introduce programming and interesting projects for novice programmers.
BoolPy is a Python module that iteratively simplifies Boolean Algebra expressions according to the Boolean Theorems. The purpose of this talk is twofold: (1) To present the details of an Object-Oriented solution to the symbolic computing problem and (2) to present the BoolPy module as a useful classroom tool for teaching Boolean Algebra in college-level mathematics and computer science courses.
FOSS@RIT is an applied research lab at Rochester Institute of Technology focused on promoting free/open source software and open web technologies. The lab helped create a series of classes which have resulted in several educational games and tools written in Python for the Sugar desktop environment. Come learn more about our students' projects and how open source can be applied in the classroom.
Search is an increasingly common request in all types of applications as the amount of data all of us deal with continues to grow. The technology/architecture behind search engines is wildly different from what many developers expect. This talk will give a solid grounding in the fundamentals of providing search using Python to flesh out these concepts in a simple library.
There's more to shipping a stand-alone python app than just running py2exe over your code. Want to deploy automatic updates? Want to be sure it runs on legacy platforms? Want to add professional touches like code signing? And want to do this all in a cross-platform manner? This talk will show you the tools you can use to make your frozen apps better in a variety of small yet important ways.
How do you bring more women into programming communities with long-term, measurable results? In this talk we'll analyze our successful effort, the Boston Python Workshop, which brought over 200 women into Boston's Python community this year. We'll talk about lessons learned running the workshop, the dramatic effect it has had on the local user group, and how to run a workshop in your city.
This talk evaluates a well-known free software tutorial (the official Django tutorial) from the perspective of a web development novice in order to point out omissions and common sticking points and suggest improvements. More generally, this talk is useful to anyone looking to improve their project's tutorials and other newcomer-targeted documentation by approaching them with "beginner's mind".
Tornado, often thought of as a web development framework and toolset is built on top of a protocol-agnostic IOLoop, presenting an alternative to Twisted as a foundation for asynchronous application development in Python. This talk covers the Tornado IOLoop, its features and the process of writing drivers and applications using it.
If you've ever wanted to get started with parsers, here's your chance for a ground-floor introduction. A harebrained spare-time project gives birth to a whirlwind journey from basic algorithms to Python libraries and, at last, to a parser for one of the craziest syntaxes out there: the MediaWiki grammar that drives Wikipedia.
Many of you are probably familiar with NLTK, the wonderful Natural Language Toolkit for Python. You may not be familiar with Linkgrammar, which is a sentence parsing system created at Carnegie Melon university. Linkgrammar is quite robust and works "out of the box" in a way that NLTK does not for sentence parsing.
Pyramid is a very flexible framework, but when dealing with large projects and multiple developers it pays to establish a few ground rules and follow some conventions. In this talk we'll discuss some patterns for organizing and developing a large Pyramid application.
Why does “top” show that your Python process uses 110 MB of virtual memory but has a resident set size of 9 MB? Does it consume more memory to spawn several interpreters, or to run one Python and have it fork() further workers? What is an “undefined symbol,” anyway? Learn about how an operating system manages memory, loads shared libraries, and what this means for Python servers and applications.
If writing is a means for organizing your thoughts, then sketching is a means for organizing your thoughts visually. Just as good writing requires drafts, good design requires sketches: low-investment, low-resolution braindumps. Learn how to use ugly sketching to iterate your way to a better product.
Localization of Python apps used to be hard, but not any more. This talk will offer a short intro on software localization in Python and discuss today's best practices. It will present Transifex, a modern, Django-based SaaS, also referred to as 'The Github of translations', used by 2.000 open-source projects including Django, Mercurial, Fedora and Firefox.
In this talk we will provide an overview of some of the web2py design decisions and its newest features. In particular we will discuss which design decisions were inspired by other frameworks (Django, Turbogears, Flask) and which were not and why.
This talk distills some intereting stuff from What's new document from 2.7, 3.2 and upcoming 3.3 release. Look out for those new arguments to your favorite methods, functions add the wow! factor to your code. Heard of @lru_cache?
With nearly 1.5 million downloads per month, the CPython installers for Windows account for a huge amount of the traffic through python.org, and they're the most common way for Windows users to obtain Python. Take a look at what's going on with Python on Windows and see what the road ahead looks like for Python 3.3.
Learn how to write Python plug-ins for GIMP, the GNU Image Manipulation Program. With PyGIMP, you can automate simple image processing tasks in just a few lines of PyGIMP, develop elaborate plug-ins that do low-level pixel manipulation, or anything in between.
This talk will delve deep into advanced aspects of the Celery task queue and ecosystem. Previous experience with task queues and message oriented middleware is beneficial.
Datums! Coordinate systems! Map projections! Topologies! Spatial applications are a nebulous, daunting concept to most Pythonistas. This talk is a gentle introduction into the concepts, terminology and tools to demystify the world of the world.
This talk will show you how to develop a game using Kinect from Python. I'll start w/ an introduction to the Kinect API including skeleton tracking, normal video, depth video, and audio APIs including speech recognition. I’ll then show how the Kinect APIs can be incorporated into a game using PyGame. After the talk you’ll be able to start developing your own Python based Kinect games!
Can your robot play Angry Birds? On an iPhone? Mine can. I call it "BitbeamBot". It started as an art project, but it has a much more serious practical application: mobile web testing. To trust that your mobile app truly works, you need an end-to-end test on the actual device. BitbeamBot is an Arduino-powered open-source hardware CNC robot that can test any application on any mobile device.
This talk aims to briefly introduce the core concepts of caching and covers the best practices of implementing them, using a small variety of python web frameworks (Flask, Django) for example code.
This talk traces lightweight concurrency from Python 2.2's generators, which enabled semi-coroutines as a mechanism for scheduling "weightless" threads; to PEP 342, which created true coroutines, and hence made event-driven programming easier; to 3rd party libraries built around coroutines, from older GTasklet and peak.events to the current Greenlet/gevent and Twisted Reactor.
Cross-compiling is not a use case directly supported by the Python build and extension system. This talk will discuss the process of building python for your embedded platform, and the basics of getting C extensions compiled and running. It will focus on Linux so that the build host and the build target are the same.
The continual decrease in the cost of computer hardware is allowing more embedded systems to be built with Linux and Python, instead of the traditional approach of a real-time operating system and C. This talk reviews the differences between those approaches and describes problems, solutions, and tools that can be used when building embedded systems with Python.
Django Form processing often takes a back seat to flashier, more visible parts of the framework. But Django forms, fully leveraged, can help developers be more productive and write more cohesive code. This talk will dive deep into the stock Django forms package, as well as discuss a strategy for abstracting validation for forms, and the use of unit and integration tests with forms.
Django's template language is designed to strike a balance between power and ease of use; learn how to use this balance to create awesome looking websites. This talk will cover the basics and best practices of Django templating, from custom tag and filter creation, to the finer points of template rendering and loading, and even to replacing the default templating engine itself.
How do you take the big step from casual SQLAlchemy user, who treats your database as a mysterious object store, to advanced power user, who optimizes critical queries, plans indexing and migrations, and generates efficient reports? This talk will teach you how databases think; why humanity invented the Relational Algebra; and how SQLAlchemy grants you access to relational power.
To really take advantage of Python you must understand how imports work and how to use them effectively. In this talk we'll discuss both of these. After a short introduction to imports, we'll dive right in and look at how customizing import behavior can make all your wildest dreams come true.
SQLAlchemy is the object relational mapper and database toolkit for Python, first introduced in 2005. In this talk I'll describe why SQLAlchemy has always been called a "toolkit", detailing the software construction mindset for which SQLAlchemy was designed to be used with - what I am currently referring to as the "Hand Coded" approach.
CherryPy was the first web framework to be made available for use with Python 3, and we tried several approaches to support both Python 2 and 3 before settling on one. Learn about the ups and the downs of each approach, and ways you can make your own porting project easier.
The Python community is abuzz about the major speed gains PyPy can offer pure Python code. But how does PyPy JIT actually work? This talk will discuss how the PyPy JIT is implemented. It will include descriptions of the tracing, optimization, and assembly generation phases. I will demonstrate each step with a example loop.
Mailman 3 has been in development for several years. This is an evolution of the ever popular mailing list management system that runs thousands of mailing lists around the world. This talk describes how the code has been modernized and how the architectural deficiencies of Mailman 2 have been addressed using REST and other technologies. This is a spinoff from the AOSA chapter on Mailman 3.
As a dynamic language, Python is difficult to optimize. In addition, these dynamic features make using Python code from Java currently too complex. However, Java 7 adds the invokedynamic bytecode and corresponding library support, making it possible to finally address these problems in Jython. This talk will describe work in progress to make Jython faster and better (improving Java integration).
Python makes it easy to store, query, and transform geodata. We will run through a handful of useful GIS libraries and patterns that let you do magical things with your maps. If you want to make maps that are more interactive and more interesting, this talk is for you.
Has your garden been ravaged by the marauding squirrel hordes? Has your bird feeder been pillaged? Tired of shaking your fist at the neighbor children? Learn how to use Python to tap into computer vision libraries and build an automated sentry water cannon capable of soaking intruders.
I won't just demonstrate how to use projects that bridge programming languages, I'll walk through the lower-level code that allows inter-language communication to happen.
Python has great Unicode support, but it's still your responsibility to handle it properly. I'll do a quick overview of what Unicode is, but only enough to get your program working properly. I'll describe strategies to make your code work, and keep it working, without getting too far afield in Unicode la-la- land.
Project Gado is an initiative which aims to create an open-source archival scanning robot which small archives can purchase for $500 and use to autonomously scan their photographic collections. This talk presents the Gado 2, a prototype scanning robot built around Python and Arduino, and shares lessons learned from using Python as the primary language in a large-scale archival scanning project.
The presentation introduces the possibilities to use HDF5 (Hierarchical Data Format) from Python. HDF5 is one of the fastest ways to store large amounts of numerical data. The talk is for scientist who would like to store their measured or calculated data as well as for programmers who are interested in non-relational data storage.
Exploring and analyzing data can be daunting and time-consuming, even for data lovers. Python can make the process fun and exciting. We will present techniques of data analysis, along with python tools that help you explore and map data. Our talk includes examples that show how python libraries such as csvkit, matplotlib, scipy, networkx and pysal can help you dig into and make sense of your data.
Digital fabrication is the art of translating digital designs into physical objects. Using personal machines that are controlled via software, a live demonstration of CNC milling and 3D printing will also be performed. This talk is a walkthrough from 3D models to machine motion, that shows how we can use Python to write GCODE generators that create endless form.
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. Python is our favorate programming language that allows you to integrate systems more effectively. Learn how to use Python to communicate with an Arduino and interact with sensors, solenoids and motors.
Providing full-featured REST APIs is an increasingly popular request. Tastypie allows you to easily implement a customizable REST API for your Python or Django applications.
Recorded: March 10, 2012
Last updated: January 29, 2013
Recorded: March 10, 2012
Last updated: January 29, 2013
Due to its robust namespacing, Python uniquely equips developers to write and distribute reusable code. The Python community has a tool for this: the Python Package Index. PyPI is a massive repository of code, and in this talk you'll learn how to take code that you've written it and register and distribute it for use by others.
Spatial data are often seen as opaque to most developers, and while dealing with them does require a shift in approach from the data types we most regularly handle, they needn’t be the domain of specialists. High-quality Python libraries and Python-based applications exist for operating on and transforming spatial data, and for creating visualizations, including maps for presentation on the web.
Analyzing, storing and visualizing time-series efficiently are recurring though difficult tasks in various aspects of scientific data analysis such as meteorological forecasting, financial modeling, ... In this talk we will explore the current Python ecosystem for doing this effectively, comparing options, using only open source packages that are mature yet still under active development.
Twitter's new scalable, fault-tolerant, and simple(ish) stream programming system... with Python!
A deep dive into writing tests with Django, covering Django's custom test- suite-runner and the testing utilities in Django, what all they actually do, how you should and shouldn't use them (and some you shouldn't use at all!). Also, guidelines for writing good tests (with or without Django), and my least favorite things about testing in Django (and how I'd like to fix them).
The email package in the Python Standard library has had a somewhat rocky transition into the Python3 era, and still doesn't handle non-ASCII easily. That is about to change. This talk will compare how things worked in Python2 (the past), how things work now (in Python3.2), and how things will work much better in the future (hopefully Python3.3).
The recent cloud buzz has hugely benefited Python web devs. But, for Python's formidable scientific community, the cloud has been less ambitious--until now. PiCloud is a Python-based cloud platform that tackles a noble cause: giving every scientist in the world instant access to a supercomputer. The talk will cover how Python inspired the design of PiCloud, which has now processed over 100M jobs.
"The Pyed Piper", or pyp, is a linux command line text manipulation tool similar to awk or sed, but which uses standard python string and list methods as well as custom functions evolved to generate fast results in an intense production environment.
By ensuring consistency and repeatability in setting up the development environments of a team of developers, errors can be avoided (by automating repetitive tasks). It also helps by lowering the entry barrier for new developers, and letting existing developers focus on development tasks without having to worry about infrastructure or process issues.
New Python web developers seem to love running benchmarks on WSGI servers. Reality is that they often have no idea what they are doing or what to look at. This talk will look at a range of factors which can influence the performance of your Python web application. This includes the impact of using threads vs processes, number of processors, memory available, the GIL and slow HTTP clients.
Java is in some ways a bogeyman to the Python community -- the language that parents scare their children with, the Cobol of the 21st century. But if we look past the cesspool of JEE it turns out that Java has quietly become an excellent systems environment, one that is still in many ways ahead of its time.
calendar from the standard library are a bit messy.
Find out what to use where and how (particularly when you have users in many
timezones), and what extra modules you might want to look into.
One of the goals of PyPy is to make existing Python code faster, however an even broader goal was to make it possible to write things in Python that previous would needed to be written in C or other low-level language. This talk will show examples of this, and describe how they represent the tremendous progress PyPy has made, and what it means for people looking to use PyPy.
If your Python application has users, you should be worried about security. This talk will cover advanced material, highlighting common mistakes. Topics will include hashing and salts, timing attacks, serialization, and much more. Expect eye opening demos, and an urge to go fix your code right away.
A developer talks about her lessons learned with setting up her first server, and offers advice to others about to tread that path.
Using Apache Cassandra from Python is easy to do. This talk will cover setting up and using a local development instance of Cassandra from Python. It will cover using the low level thrift interface, as well as using the higher level pycassa library.
When a web application is large, it's a good idea to send different kinds of requests to different servers to reduce the content corpus managed by each server. A decentralized load balancing-based approach is presented in which each application server keeps track of what it's good at and presents its resume to load balancers, which use application server resumes to distribute load.
We will show how to build simple yet powerful RPC code with ZeroMQ, with very few (if any!) modification to existing code. We will build fan-in and fan-out topologies with ZeroMQ special socket types to implement PUB/SUB patterns and scale up job-processing tasks. Thanks to introspection, the resulting services will be self-documented. Finally, we will show how to implement distributed tracing.
Nobody thinks you have to be a performance expert to write performance tests- why assume that you have to be a security expert to write security tests? During this presentation I'll show you how to use fuzzers, attack tools, and other simple techniques to help protect your users, improve the strength of your existing tests, and gain confidence in the security of your code. There will be demos!
For many DSLs such as templating languages it's important to use code generation to achieve acceptable performance in Python. The current version of Jinja went through many different iterations to end up where it is currently. This talk walks through the design of Jinja2's compiler infrastructure and why it works the way it works and how one can use newer Python features for better results.
The ultimate goal of data visualization is to tell a story and supply meaning. There are tools and science that can inform your choice of data to present and how best to present it. We reflexively evaluate data and fit it into a narrative which aids decisionmaking; learn how to take advantage of this tendency in order to deliver meaning, not just numbers and charts.
Learn how decorators and context managers work, see several popular examples, and get a brief intro to writing your own. Decorators wrap your functions to easily add more functionality. Context managers use the 'with' statement to make indented blocks magical. Both are very powerful parts of the python language; come learn how to use them in your code.
[audio missing from first 3 min] Music Information Retrieval technology has gotten good enough that you extract musical metadata from your sound files with some degree of accuracy. Find out how to use Python (along with third- party APIs) to determine everything from the key/tempo of a song to the pitch/timbre of individual notes. Then we'll do some amusing analysis of popular tunes.
In this talk, aimed at intermediate Pythonistas, we'll have a look at some common, simple patterns in code, and the testing patterns that go with them. We'll also discover what makes some code more testable than others, and how mocks and fakes can help isolate the code to be tested (and why you want to do that). Finally, we'll touch on some tools to help make writing and running tests easier.
Most unit tests aren't and their authors suffer for it. What is a unit test, really? How can writing them prevent classic testing problems? If you do write them, what trade-offs are you implicitly making?
Graphs are everywhere - from your distributed source code control to Twitter analytics. This session presents a set of three problems and shows how they can be decomposed into operations on graphs, and then demonstrates solutions using the various graph libraries available for (or accessible to) Python.
Is your website accessible? Have you tested it? What does it even mean for a website to be accessible? In this talk we'll show some of the most common problems disabled users have and demonstrate how to fix them. I'll also introduce you to some tools that are written in Python to help you determine how accessible your site is.
In 2.6, Python introduced the Abstract Base Classes. Before that we had "protocols" (and we still do). In this talk we'll look at how the general concept of interfaces fits into today's Python. We'll also look at some of the alternate proposals of the past, some of the controversies around ABCs, and the direction interfaces might go in the future.
Python's metaclasses grant the Python OOP ecosystem all the power of more complex object inheritance systems in other languages, while retaining for most uses the simplicity of the straightforward class structures most developers learn when being introduced to object-oriented programming. This talk is an explanation of metaclasses: first, what they are, and second, how to use them.
PDB is an interactive debugging environment for Python programs. It allows you to pause your program, look at the values of variables, and watch program execution step-by-step, so you can understand what your program is actually doing, as opposed to what you think it's doing. This talk will show novice and intermediate Python users how to use PDB to troubleshoot existing code.
Understanding the internal state of a running system can be vital to maintaining a high performance, stable system, but conventional approaches such as logging and error handling only expose so much. This talk will touch on how to instrument Python programs in order to observe the state of the system, measure performance, and identify ongoing problems.
IPython is widely used in the scientific community, but its various tools can be used in any context. IPython gets you as close as possible to the Python language, with an array of tools for productive work: at the terminal, in GUIs, through a web browser, and in high-level parallel computing. This talk will explain the design of IPython and provide short, hands-on demos of its main features.
With Python, segmentation faults and the like simply don't happen -- programs do not crash. However, the world is a messy, chaotic place. What happens when your programs crash? I will talk about how to make sure that your application survives crashes, reboots and other nasty problems.
Free, Libre & Open Source Software (FLOSS) began as a not-for-profit endeavor. FLOSS licenses permit commercial & non-commercial activity, but the heart of FLOSS remains in the not-for-profit space. Kuhn will discuss advantages of non-profit structure and how non-profits facilitate neutral territory. Kuhn will also present options for projects that seek to operate officially as a non-profit org.
pandas is a Python library providing fast, expressive data structures for working with structured or relational data sets. In addition to being used for general purpose data manipulation and data analysis, it has also been designed to enable Python to become a competitive statistical computing platform. In this talk, I will discuss the library's features and show a variety of topical examples.
Our challenge was to create a login system for little people who might barely read, maybe no email, perhaps no home computer. And we had to watch out for privacy laws - especially tough for minors. But these kids want to play games, write stories, and create online avatars to share and compete against their buddies. Listen to how we developed the PBS KIDS login and moderation system in Django.
Grace Murray Hopper's famous motto, "It's easier to ask forgiveness than permission", has many useful applications -- in Python, in concurrency, in networking, as well of course as in real life. However, it's not universally valid. This talk explores both useful and damaging applications of this principle.
There are a plethora of options when it comes to deciding how to add a machine learning component to your python application. In this talk, I'll discuss why python as a language is well-suited to solving these particular problems, the tradeoffs of different machine learning solutions for python applications, and some tricks you can use to get the most out of whatever package you decide to use.
Practice iterative development like the pros. Release sooner, faster, and more often.
PostgreSQL is pretty powerful all on it's own, but did you know you can use Python as a stored procedure language? Not only does using a familiar language make development easier, but you get the power of the standard library and PyPi to boot. Come learn the ins and outs of putting Python in your DB.
Recorded: March 9, 2012
Last updated: January 29, 2013
The py.test tool presents a rapid and simple way to write tests. This talks introduces common testing terms, basic examples and unique pytest features for writing unit- or functional tests: assertions and dependency injection mechanisms. We also look at other features like distributing test load, new plugins and reasons why some Redhat and Mozilla people choose pytest over other approaches.
This talk covers the power and metaprogramming features of Python that cater to mad scientists and evil geniuses. This will also be of interest to others who just want to use of Python in a more power (hungry) way. The core concept is that you can synthesize functions, classes and modules without a direct correspondence to source code. You can also mutate third-party objects and apps.
A quick introduction to Sage, an open-source mathematics package for experimentation in all areas of mathematics. There will be some brief remarks and demos of what Sage is capable of.
This talk covers scalability at YouTube. It's given by one of the original engineers at YouTube, Mike Solomon. It's a rare glimpse into the heart of YouTube which is one of the largest websites in the world, and one of the few extremely large websites to be written in Python.
Mozilla's projects have thousands of tests, so we've had to venture beyond vanilla test runners to keep things manageable. Our secret sauce can be used with your project as well. Reach beyond the test facilities that came with your project, harnessing pluggable test frameworks, dynamically reordering tests for speed, exploring various mocking libraries, and profiling your way to testing nirvana.
Want to analyse C/C++ code using Python? I've written a plugin for GCC that embeds Python inside the compiler, allowing you to write new C/C++ compilation passes in Python. I've used this to build a static analysis tool that understands the CPython extension API, and can automatically detect reference- counting bugs, and other errors.
Ever wondered how CPython actually works internally? This talk will show you. We start with a simple Python program, then slowly step through CPython, showing in exhaustive detail what happens when it runs that program. Along the way we'll examine the design and implementation of various major CPython subsystems and see how they fit together. The audience should be conversant in C and Python.
Project Hosting at Google Code is a large, well-established system written mostly in Python. We'll share our battle-born convictions about creating tests for test-unfriendly code and the larger topic of testing.
Classes are great but they are also overused. This talk will describe examples of class overuse taken from real world code and refactor the unnecessary classes, exceptions, and modules out of them.
All problems have simple, easy-to-understand, logical wrong answers. Subclassing in Python is no exception. Avoid the common pitfalls and learn everything you need to know about making effective use of inheritance in Python.
Many - perhaps even most - Python software involves a network, at least a little bit. You've probably written some yourself. But do you really know what happens - to your kernel, to your ethernet card, to Python - when you call socket.send()? Come to this talk and find out: if you dare.
In this talk we learn how to throw together a distributed system using gevent and a simple framework called gservice. We'll go from nothing to a distributed messaging system ready for production deployment based on experiences building scalable, distributed systems at Twilio.
The world of infrastructure as code is becoming far more pervasive and many Python developers are trying to find a way to get started. This class will get you up and running with Chef and Fabric to manage your systems be they in the cloud or under your desk.
Python projects can succeed or fail because of their documentation. Thanks to Sphinx, Python now has a “documentation framework” with indexing, syntax highlighting, and integration with your code. Students will be given a small undocumented Python package, and during the exercises they will give the package a tutorial and reference manual. Plus: deployment and theming!
At EuroPython 2011 I ran a very hands-on tutorial for High Performance Python techniques. This updated tutorial will cover profiling, PyPy, Cython, numpy, NumExpr, ShedSkin, multiprocessing, ParallelPython and pyCUDA. Here's a 55 page PDF write-up of the EuroPython material: http://ianozsvald.com/2011/07/25 /high-performance-python-tutorial-v0-2-from-europython-2011/
In this tutorial, I will cover how to write very fast Python code for data analysis. I will briefly introduce NumPy and illustrate how fast code for Python is written in SciPy using tools like Fwrap / F2py and Cython. I will also describe interesting new approaches to creating fast code that is leading changes to NumPy on a fundamental level.
This tutorial will walk the attendees from some introductory game development theory (what makes a good game) and through development of a simple game (how to make a good game) with time left over for some experimentation and exploration of different types of games.
The goal of this tutorial is to give the attendee a first experience of machine learning tools applied to practical software engineering tasks such as language detection of tweets, topic classification of web pages, sentiment analysis of customer products reviews and facial recognition in pictures from the web or from your own webcam.
This tutorial teaches students how to create beautiful, interactive maps for the web. When asked to display geodata, most developers decide to put some big red markers on an embeddable Google Map and call it a day. If you're interested in creating maps that are more beautiful, more interactive, and more usable, this tutorial is for you.
From how the operating system handles your requests through design principles on how to use concurrency and parallelism to optimize your program's performance and scalability. We will cover processes, threads, generators, coroutines, non-blocking IO, and the gevent library.
When it comes to plotting with Python many people think about matplotlib. It is widely used and provides a simple interface for creating a wide variety of plots from very simple diagrams to sophisticated animations. This tutorial is a hands-on introduction that teaches the basics of matplotlib. Students will learn how to create publication-ready plots with just a few lines of Python.
This tutorial is for software developers who've been using Python with success for a while but are looking for a deeper understanding of the language. It demystifies a number of language features that are often misunderstood.
Social Network data permeates our world -- yet we often don't know what to do with it. In this tutorial, I will introduce both theory and practice of Social Network Analysis -- gathering, analyzing and visualizing data using Python and other open-source tools. I will walk the attendees through an entire project, from gathering and cleaning data to presenting results.
This tutorial is an introduction to Bayesian statistics using Python. My goal is to help participants understand the concepts and solve real problems. We will use material from my book, Think Stats: Probability and Statistics for Programmers (O’Reilly Media).
The tutorial will give a hands-on introduction to manipulating and analyzing large and small structured data sets in Python using the pandas library. While the focus will be on learning the nuts and bolts of the library's features, I also aim to demonstrate a different way of thinking regarding structuring data in memory for manipulation and analysis.
A tutorial that goes beyond all other Django tutorials; we'll dive deep into the guts of the framework, and learn how each commonly-used component -- ORM, templates, HTTP handling, views and the admin -- work from the bottom up, covering both public and internal APIs in excruciating detail.
This tutorial provides an overview of techniques to improve the performance of Python programs. The focus is on concepts such as profiling, difference of data structures and algorithms as well as a selection of tools and libraries that help to speed up Python.
For many applications PyPy can provide performance benefits right out of the box. However, little details can push your application to perform much better. In this tutorial we'll give you insights on how to push pypy to it's limites. We'll focus on understanding the performance characteristics of PyPy, and learning the analysis tools in order to maximize your applications performance.
The Django framework is a fast, flexible, easy to learn, and easy to use framework for designing and deploying web sites and services using Python. In this session, we'll cover the fundamentals of development with Django, generate a Django data model, and put together a simple web site using the framework.
IPython provides tools for interactive and parallel computing that are widely used in scientific computing, but can benefit any Python developer. We will show how to use IPython in different ways, as: an interactive shell, an embedded shell, a graphical console, a network-aware VM in GUIs, a web-based notebook with code, graphics and rich HTML, and a high-level framework for parallel computing.
This intermediate-level class will teach you techniques using the popular NoSQL database MongoDB, its driver PyMongo, and the object-document mapper Ming to write maintainable, high-performance, and scalable applications. We will cover everything you need to become an effective Ming/MongoDB developer from basic PyMongo queries to high-level object-document mapping setups in Ming.
Relational databases are often the bread-and-butter of large-scale data storage, yet they are often poorly understood by Python programmers. Organizations even split programmers into SQL and front-end teams, each of which jealously guards its turf. These tutorials will take what you already know about Python programming, and advance into a new realm: SQL programming and database design.
Pyramid is the web framework at the core of the Pylons Project. It's a "pay only for what you eat" framework. You can get started easily and learn new concepts as you go, and only if you need them. It's simple, well tested, well documented, and fast. This course will present Pyramid and lead you through the creation of a an application as the concepts from the framework are introduced.