Designing interfaces so that other code can interact with ours (whether our code is a library, framework, application, website...) is a very common and clearly crucial activity, but it's fraught with dangers -- there's a lot stuff we all keep doing wrong time after time. This talk shows some common categories of API design errors encountered in the wild, with tips on how to avoid them when you design your next API.
Goals: to show you how to focus resources and attention to help avoid mistakes in API design. Prereqs: experience designing and developing software, esp. software which needs to interact w/other existing software.
In a world of many programming languages, the popularity of Python continues to grow without bound. We examine what makes it special and how it influences the way we program:
by Jon Åslund
This is a story about how Spotify started, how we evolved, where we are today and how Python has always been a big part of our success. Where do we use it? Where do we not use it? Learn about the Unix way and the Debian way of maintaining a healthy love for Python, while two-timing with other languages such as Java and C++.
Twisted is one of the best asynchronous network programming frameworks out there, and can help you build cool stuff very easily, once you understand the core design.
Unfortunately, Twisted is also a huge framework and can be very daunting for beginners to approach. This training session aims to help people with little or no asynchronous programming experience understand both Twisted and asynchronous programming. The plan is to cover core asynchronous topics, the Twisted way, and as many practical applications including web services, IPC, GUI applications etc.
The audience should be competent in core Python constructs. No previous asynchronous or threading programming experience required.
UPDATE: Everyone that plans to attend the talk, please install Twisted (http://twistedmatrix.com). Make sure everything is OK by doing:
>>>from twisted.internet import reactor
The above should block until you hit Ctrl-C and then exit the Python interpreter.
by Péter Szabó
Stackless Python and the greenlet package for CPython are two different implementations of coroutine support for Python. (Coroutines are fundamental building blocks of I/O frameworks like gevent, Eventlet, Concurrence and Syncless to conveniently handle thousands of socket connections at a time without creating threads.) Stackless and greenlet implement a different interface. However, each is powerful enough so that it can be used to emulate the other one. In this talk we explore the differences and discuss design decisions and testing strategies of the emulations we have implemented.
Gevent (http://gevent.org) is a coroutine-based library that enables you to write highly-concurrent network and web applications. Learn in detail what Gevent is, what it does and how it does it.
I will introduce a coroutine-based approach to network programming, explain it benefits and pitfalls.We will walk through the Gevent API, including the most recent additions, and understand how it is implemented. I will make a quick overview of the most interesting 3rd party add-on and applications after that.
by Andreas Jung
MongoDB is the new star of the so-called NoSQL databases. Using Python with MongoDB is the next logical step after having used Python for years with relational databases.
This talk will give an introduction into MongoDB and demonstrate how MongoDB can be be used from Python.
More information can be found under:
by Vincent Noel
This training session will introduce the Python scientific stack to Engineers who use matlab in their day-to-day job and want to switch to an open solution or explore other alternatives. The basics of Python will first be presented: syntax, variable types and data structures, functions and flow control, exceptions. Python modules and tools required for matlab-like programmation in Python will be presented: ipython, numpy and matplotlib. Several Python applications typical of engineering problems will be presented and compared with their matlab version, as time will allow: plotting (time series, histograms, pseudocolor plots, etc.), basic I/O (e.g. ASCII, CSV, matlab MAT files), signal processing, mapping, etc. The creation of user interfaces with PyQt will be briefly introduced. Differences between Interactive and non-interactive programming will be described. Along the session, key differences with matlab will be underlined and discussed. Sources of information and documentation, online and offline, will be presented.
These concepts will be introduced as coding exercises using the Python programming environment provided by the Python(x,y) distribution, which is freely downloadable and includes recent versions of Python, numpy and matplotlib. This session will also focus on using Python(x,y) efficiently for Python programmation. Attendees should bring their own laptop running Windows. It is also recommended that they download and install the pythonxy distribution from http://www.pythonxy.com/.
Although no knowledge of Python is required to attend this session, a basic knowledge of matlab and of its typical programming usage is needed.
What was my motivation for working with Python after two years of PHP? There is so much you can do. Functions are objects you can pass around, you can decompile functions to see how they work internally, you can alias a bound method to a global function and it will just work. You can change import semantics, override the method resolution order, you can write metaclasses, you can hook into the CPython interpreter API and much more.
Five years later I came to the conclusion that this is really not what Python is about and that a lot of what I did was interesting but not necessarily a good idea. This talk is a 45 minute recompilation of things I really shouldn't have done in the first place. Expect a bunch of neat and interesting hacks that showcase the possibilities of the language.
At ep.io we built a Python hosting platform from the ground up, designed to run large numbers of web applications on a small number of physical machines both securely and in a reasonably scalable way. This talk will show you how we built our infrastructure - using Redis, eventlet, PostgreSQL and more - and what lessons we learnt from our first few thousand deploys.
See how we split services into multiple processes and greenthreads; the pains of building a cooperatively-multitasking PTY module; how Redis isn't the answer to everything, but is still very useful; how to persuade third-party software to work securely in a shared environment; and how important it is to have good logging, especially when you have more than five servers.
We will show the tools and the infrastructure that makes easy creating own python project in Ubuntu and distributing it to millions of users. It will be shown several tools: Launchpad, Quickly and and the Ubuntu's PPA (personal package archiving).
by Wesley Chun
All of us are familiar with using open source tools to develop software applications with, but instead of writing code, it is also possible to create the manuscript of a book in very much the same way. These days, authors have many choices in terms of the tools which are available to aid them in writing a book. Gone are the times when the only option is using a proprietary word processor, so why not try it using open source tools? It's especially attractive to those who develop software using open source tools as well those who are writing books about open source tools. Both code and the written word are created in plain text files. These files are easily archived using some version control system. They can be shared easily via e-mail and can also be backed up in the same manner. In the end, the final product is shipped to the customer: in the case of software, it's distribution via CD or DVD, or perhaps a release for installation on a server, and for a book, it's delivering a manuscript to the publisher, perhaps in a format such as HTML or PDF®.
Upon some reflection, writing a book is, in many ways, similar to writing an application: you create text or code which is saved to a file (or files--typically one but could be more) file in some format, proprietary or otherwise. Additions, changes, or deletions are made to the file(s), which is then updated when the file is (re)saved. Backups need to be made, some versioning may be required to keep track of multiple files during the course of development, and finally, the resulting file(s) have to be delivered, as described above. Because of all the similarities described, we assert that it is possible to use a development environment utilizing Python and other open source tools to not only write application with, but also be able to create the entire manuscript for a book as well! While this entire concept should not really be mind-blowing, it does represent a trend seemingly growing in popularity in the open source world.
In particular, we highlight the following requirements that are necessary when creating a manuscript, especially with co-authors:
In this talk, we highlight one particular case study, the development of Addison Wesley's 2009 publication, "Python Web Development with Django", as well as provide some insight into other projects created using similar tools. Open source software has radically affected how applications are built today, and this phenomenon has the ability to affect the book publishing world in the same way.
A teaser for the full tutorial on Tuesday: http://lanyrd.com/2011/europytho...
by Claudio Desideri
In this talk I'm going to explain the main features and possibility that Panda3D gives us when we want to create a game from scratch. Then, I'll explain how the engine is structured and how it works conceptually going also through code examples and some practical operations.
It's meant for beginners who have also never worked with realtime graphics and the only prerequisite is a bit of python knoweledge including how to write a simple program and how to run it. The goal is to create a simple realtime application that take care of user input and reacts depending on it.
PostgreSQL (or “Postgres”) is an immensely powerful, incredibly extensible relational database, released under a permissive open source licence that is similar to that of CPython. PL/Python is one of PostgreSQL's standard server-side procedural languages, through which Python stored functions can be defined that can be called directly from SQL, quite seamlessly.
Play to the strengths of Postgres, by writing application business logic within the database in either Python 2 or Python 3. Enforce advanced business rules using Python, including constraints on both tables and database level datatypes (“domains”). By pushing the logic tier into the database, you can potentially greatly increasing your application's scalability by minimising the number of database roundtrips.
Includes case studies and topical coverage of PL/Python related enhancements in upcoming 9.1 release, and recent 9.0 release. The talk only assumes a very basic understanding of databases.
A teaser for the full tutorial on Tuesday: http://lanyrd.com/2011/europytho...
by Jonathan Fine
Last year's course material is available online at
The PSF recently adopted a diversity statement. While some argue that we should do this just because it's "the right thing to do", others question why we, as a technical community, should even worry about diversity. This talk addresses the diversity question, not in moralistic or ethical terms, but in pragmatic ones. Studies on creativity and productivity demonstrate the potential benefits of diversity for the Python community. Making Python the best language it can be is not merely helped by increasing diversity, but may be dependent on diversity.
20th–26th June 2011