One of the great advances in Python over the last few years has been the maturation of generators — starting as an alternative way to create an iterator, then as the basis for coroutines, and now as the basis for asynchronous programming. But just what are coroutines, and how do they allow us to write asynchronous code? In this talk, A. Jesse Jiryu Davis walks us through the creation of a simple HTTP client, first without coroutines, then with them, and then using asynchronous techniques. If you’ve often wondered how these additions to Python might be useful in your work, or how the asynchronous additions to Python 3 are used, this talk should be of great interest to you.
The book (and movie) Moneyball described how it’s possible to use metrics and statistics to squeeze the greatest possible results out of a low-budget operation. In this talk, Jeffrey Lembeck tells us that we can and should do the same thing for our Web applications. How does this work? What can (and should) we measure, and what should we do in response? If you want to do more with less (and all of us do), then you’ll want to watch this talk.
JavaScript is one of the most important programming languages, because so many Web sites include it on the client side (and sometimes on the server side). This means that the optimization of JavaScript programs is a problem that, when solved, can affect a large number of users. In this talk, Marija Selakovic points to some of the low-hanging fruit in the world of JavaScript optimization, demonstrating techniques that work just as well, but can massively affect program speed and efficiency.
If your PostgreSQL query runs slowly, what should you do? How can you find out what has gone wrong, and how to optimize it? The “explain” command (and related ‘”explain analyze” command) tell you what the PostgreSQL query planner intends to do, and then (if you use the “analyze” option) executes the query, as well. The problem is that the output from “Explain” can often be cryptic to newcomers. In this talk, Josh Berkus introduces the “explain” command, and shows how database developers and administrators can use it to improve the speed of their queries.
Julia is a relatively new programming language, one meant for use with data analysis (aka “data science”). Julia aims to simultaneously provide a low threshold for entry (so that non-programmers can analyze their data without learning too much about programming) and high-performance execution. How does Julia manage to do this, and how do the results compare with a language such as Python‘s NumPy and SciPy? In this talk, Leah Hanson describes Julia’s aims, the differences between Julia and other languages (such as Python), and what how these design decisions have affected the resulting language.
As Web applications grow, we often worry about identifying and fixing performance bottlenecks — and then scaling further, as our applications become even more popular than before. MasterCard, a major international provider of credit cards, has to deal with a set of applications that need to run very quickly, identify fraud quickly and easily, and be extremely fault tolerant. In this talk, Ted Boehm, who works at MasterCard, describes what they have done to create, test, and maintain systems that need to be so reliable and performant. Even if you are unlikely to create an application as large as MasterCard’s, you will likely learn about scaling (and what not to do) from this talk.
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.
How big is the data you’re processing? If it’s large, then you will probably not want to put all of it in a single data structure, in order to save memory. Instead, you can use a lazy list, aka a “stream,” which allows us to consume very small amounts of memory while working with very large, or even infinitely large, data structures. In this talk, Pam Selle describes streams, demonstrates why they are useful in general, and then talks about ways in which we can work with streams in JavaScript — including a summary of the standards and data structures that will be included in upcoming versions of JavaScript. If you’re planning to work with large amounts of data, regardless of the language with which you’ll be working, then this talk will be of interest to you.
Rust is a new language for systems programming, which aims to be friendly to developers. But typically, a language that is friendly to developers can be hard to optimize. In this talk, Yehuda Katz discusses the Rust language, starting by focusing on a compiled extension that was written in Rust, and which required surprisingly little optimization to outperform C. How can this be, and what does it say about Rust? And how can it help us to understand the differences between dynamic and static languages?
Everyone wants their database to run faster. Optimizing databases is a big and complex topic, but there are some simple rules of thumb that, if you follow them, can help your database (and the applications using the database) to run faster. In this talk, Josh Berkus describes a number of techniques you can use to improve your database performance — sometimes, in major ways, with a small amount of thought and work.