pip is an essential tool for Python developers; It allows you to download, install, and upgrade Python packages from PyPI with a minimum of fuss. But if you scratch beneath the surface, pip has a number of problems and issues that can be difficult for people to resolve. Why does pip work the way it does, and what should we be aware of when working with it? In this talk, Robert Collins tells us about the good, but most especially the bad and the ugly of pip. In so doing, he lets us understand how pip works, and what it can (and cannot, and will one day) be able to do to make our Python development easier and better.
Programmers who come to Python from other languages are often surprised to discover how variables work. Things seem even odder when you deal with mutable and immutable values, and see the differences between their behaviors. In this talk, Ned Batchelder reviews how assignment works in Python, when names are connected to values, and how Python’s consistent rules can result in some confusion — until you understand what’s going on, that is.
Python‘s speed is often good enough for many purposes. But in some cases, you really wish that you could run your Python code at C-language speed. You could always write a Python extension in C, but if you’re not a fluent C programmers, then that’s not really an option. Plus, you’d lose all of the Python expressiveness that you already enjoy. Enter Cython, which translates your Python into C — and then provides you with a Python library that you can import into your Python code. In this talk, Stefan Behnel introduces Cython, demonstrates what it can do, and describes how it can fit into a Python development shop aiming to increase execution performance while working in a Python (and Python-like) environment.
Data science is all about finding insights in large data sets. In many cases, these insights are easier to find, or at least more persuasive, when they are visualized. A number of graphics libraries exist in the data-science world, some of which are written in Python. In this talk, Brian Van de Ven introduces Bokeh, a visualization library for Python that works with other elements of the SciPy stack to create beautiful charts and graphs. Bokeh goes further than other libraries, in that it not only produces static images, but also dynamic visualizations in which someone can explore the data.
Agent-based modeling is a powerful tool for understanding complex behavior — deriving rules that describe various phenomena, as well as for predicting behavior. It has a wide variety of uses in science, engineering, and social sciences. In this talk, Thomas French and Fred Farrell introduce the idea of agent-based modeling, and demonstrate some models that they have built in Python to understand riots that took place in London in 2011. Even if you’ve never heard of agent-based modeling, this talk demonstrates some of the power that ABM brings to the table.
Many programmers get degrees in computer science, and then go on to work at high-tech companies. But the odds of you arriving at your first job (or any subsequent job) knowing everything that you need to do your work are pretty slim; you’re going to need to learn many different technologies in order to be a productive team member. Companies thus expect that you’ll need to learn, and allocate training budgets for developers. But even if you’re not taking a formal class, you’ll need to learn, on the job, many of the things that you’ll need. In this talk, Allison Lacker describes what she learned, and how she learned it, while working on a Django project at Eventbrite. What attitudes, habits, and interactions with her coworkers helped her to succeed? And what roadblocks did she hit along the way? All of us need to keep learning, and this talk describes one way that we can do this.
Python is a dynamic language, which basically means that data has types (but identifiers don’t). So s can point to a string, an int, a dict, or a function. But there has been some movement in the last year or two to introduce some form of strong typing, or type hints, into Python. What does this mean, and how does it work? One way to think about it is by looking at a similar idea that was implemented in JavaScript, known as TypeScript. In this talk, Christopher Neugebauer describes TypeScript, what it did for JavaScript, and how Python developers can (and should) look at the introduction of type hints in future versions of Python.
Object-oriented programming has grown from a new and interesting idea to a pervasive concept and paradigm in the programming world. But what is object-oriented programming all about? What problems was it intended to solve? How does Python‘s implementation of objects differ from the original ideas that were proposed decades ago? What is subclassing supposed to do for us? And how is all of this supposed to help programmers get things done? In this talk, Iwan Vosloo introduces these ideas, and compares this theory with how Python does things. If you are new to object-oriented programming, or to Python’s view of objects, then this talk should help to answer some of the questions you might have.
It’s often said that there are two hard problems in programming, cache invalidation and naming things. And indeed, naming things is both hard and important because it affects the maintainability of our software — the ability of another person to read and modify what we have written. The computer couldn’t care less, but the people with whom you work care a great deal. In this talk, Jacob Burch introduces the problem, and provides guidelines (and examples) of how to think about naming identifiers in your programs for maximum clarity. He uses Python for his examples, but many of these ideas apply to general best practices, not just to one specific language.
Web applications generally have a database on the back end. But how should we structure that database? There are many ways to structure our database in a database, and some of them are far more efficient and manageable than others. In this talk, Andrew Godwin discusses and shows many of the different ways in which people use and abuse their databases for back-end storage, and indicates why these might be bad ideas — whether you’re using Django, or any other Web application framework.