EuroPython 2007

Europe/Zurich
Vilnius, Lithuania

Vilnius, Lithuania

Benedikt Hegner (DESY - Deutsches Elektronen-Synchrotron)
Description

What

EuroPython is an annual volunteer-run conference for the Python and Zope communities, taking place at different sites in Europe. Having started in Charleroi in Belgium, it moved to Göteborg in Sweden, and then CERN in Switzerland. EuroPython 2007 will take place in Vilnius, Lithuania.

Who

EuroPython brings together developers, designers and business people in the Python and Zope communities. You will meet people who have just begun their journey into this world as well as the people who started it all.

Why

EuroPython provides inspirational talks and a friendly atmosphere, designed to help people build contacts and learn from each others experiences. You will meet interesting people, have a pleasant time and get to see Vilnius in its best season.

    • 08:00 09:00
      Registration
    • 09:00 10:30
      Open Space Lambda

      Lambda

      Vilnius, Lithuania

      • 09:00
        Open Space 1h 30m
    • 09:00 10:30
      Python Language and Libraries Theta

      Theta

      Vilnius, Lithuania

      • 09:00
        Extending Python with EasyExtend 30m
        Extending Python as a language has always been among the main objectives of the Python core development team. Enhancing Python and developing the CPython runtime have become interchangeable activities. Those who tried to extend Python had to be core developers of CPython or at least experimenting with one of the alternative runtime environments like PyPy, IronPython or Jython. For those who had research interests in the language or writing domain specific languages on top of Python this has always been an obstacle. EasyExtend is a grammar based code generator and Python preprocessor framework in the tradition of Lex/Yacc and ANTLR but written in pure Python and seamlessly integrated with Python. EasyExtend is also inspired by the languages-as-components metaphor which is reified in its so called fiber-space architecture. This talk will give a short introduction into EasyExtend, its design and prospectives.
        Speaker: Mr Kay Schluehr (G&D)
        Slides
      • 09:30
        Parsing Languages with mxTextTools 30m
        mxTextTools comes with a high performance tagging engine for text and Unicode data which can be used to tokenize and parse (little) languages. The resulting abstract syntax tree can then be hooked up to a generator to build a complete and fast compiler in pure Python. The talk will give a short introduction to the way the tagging engine works and how it can be used to build compilers. mxTextTools is an eGenix Open Source product available as part of the eGenix mx Base Distribution.
        Speaker: Mr Marc-Andre Lemburg (eGenix.com)
        Slides
      • 10:00
        Pythonic Interfaces 30m
        With the evolution of computer systems, software development has become increasingly more complex. One way to deal with this increased complexity is through the use of software libraries. Many object-oriented languages provide special constructs such as abstract classes and interfaces which ensure that components are properly extended and executed. Unfortunately, the Python programming language is devoid of such features. In this article, we present a library extension for Python to include these features into the language and allow for explicit class interfaces and abstract classes. While it has been attempted before, our library provides a simple, elegant, and Pythonic solution to the problem via a pure-Python stand-alone library. By extending the Python language in this manner, we allow developers to define concrete models for libraries and create modular code, while ensuring that software system designs are enforced at run time. We also argue that this provides the Python language another degree of flexibility in a formalized mechanic, as opposed to error-prone traditional “hand-shake” contracts. The usability of our proposed Python extension is demonstrated in a case study of an original game engine framework.
        Speaker: Mr Michael Hawker (McGill University / Mikeware)
        Paper
    • 09:30 10:30
      Python Language and Libraries Zeta

      Zeta

      Vilnius, Lithuania

      • 09:30
        Seamless object persistence with ZODB 30m
        Object DBMS' have not been wildly successful as a generic database. Persistency frameworks however have popped up in many places (like Hibernate) and most of them use a relational database in the backend. This always involves an impedance mismatch and also a performance penalty. The ZODB is a pure object database written in Python (and a little help from C) that has been around for about 10 years and provides reliable object persistence in Python. It is an offspring of the Zope project and can be used in any Python program. The ZODB includes is designed with all the properties of an enterprise level DBMS including logical/physical data representation, multiple backend types, in-memory snapshots, transparent persistence for Python objects, ACID compatible transactions and more. The talk will show the architecture of the ZODB, how to write a standalone application including the use of the cluster mode and some advanced features.
        Speaker: Mr Christian Theune (gocept gmbh & co. kg)
        Slides
      • 10:00
        The Storm Object-Relational Mapper 30m
        This talk will present Storm, a new Python ORM developed at Canonical which permits mapping of objects against multiple relational databases with ease. Topics covered include the project history, the high-level architecture, and examples. This EuroPython talk will also be the first public announcement of Storm, and will mark the release of the project under an open source license for general use and contributions.
        Speaker: Gustavo Niemeyer (Canonical)
    • 10:30 11:00
      Break 30m CERN

      CERN

    • 11:00 12:30
      Open Space Lambda

      Lambda

      Vilnius, Lithuania

      • 11:00
        Open Space 1h 30m
    • 11:00 11:30
      Python Language and Libraries Alpha

      Alpha

      Vilnius, Lithuania

      • 11:00
        Snakes on a Phone 30m
        Past, present and a bit of the future of Nokia's Python porting work. How do you squeeze the interpreter into a small device? How do you provide access to complex C++ APIs in a way that makes sense? Also, what does the brave new world of Trusted Computing mean for the Python coder?
        Speaker: Mr Jukka Laurila (Nokia)
    • 11:00 12:30
      Science Theta

      Theta

      Vilnius, Lithuania

      • 11:00
        OpenAlea - Visual Programming and Component based software for plant modeling 30m
        Building plant models at different scales requires integrating tools from various scientific domains such as biology, computer science, and mathematics. The open source OpenAlea project's goal is to define a framework to share and reuse heterogeneous models from the plant modeling community. A visual environment is made available to researchers to ease the building of high-level computational tasks in a simple and flexible way. The core of OpenAlea, implemented in Python, consists of a component framework that allows for the dynamic management and composition of software components. A component is a Python callable object with input and output ports. Components communicate through their ports, and can be interconnected to form complex processing graphs. A package is a deployment unit that provides components, data, and widgets as well as meta-information. The package manager is able to find and load dynamically packages installed on the computer without specific configuration. A series of packaging tools, SconsX and Distx, based on SCons and Distutils, have been developed to ease the distribution of complex C++ extensions, and to share dynamic libraries between different OpenAlea packages. A special application, Visualea, has been created as a PyQt4 visual programming environment to edit and run dataflow. For each component, graphical widgets can be either provided by user packages or generated automatically, based on their input port interfaces. This makes it possible to reuse widgets in different packages. More information on OpenAlea is available at http://openalea.gforge.inria.fr.
        Speaker: Mr Samuel Dufour-Kowalski (INRIA)
        Slides
      • 11:30
        PLASMAKIN – A Python package to handle chemical kinetics in plasma physics modelling 30m
        PLASMAKIN is a package for handling physical and chemical data used in plasma physics modelling and for computing kinetics data from the reactions taking place in the gas or at the surfaces: particle production and loss rates, photon emission rates and energy exchange rates. It has no limitation on the number of chemical species and reactions that can be handled, is independent of problem dimensions and can be used in both steady-state and time-dependent problems. A large number of species properties and reaction types are supported, namely: gas or electron temperature dependent collision rate coefficients, vibrational and cascade levels, evaluation of branching ratios, superelastic and other reverse processes, three-body collisions, radiation imprisonment and photoelectric emission. Non-standard rate coefficient functions can be handled by a user supplied shared library. PLASMAKIN is based on a shared library with data reading and computational functions and a Python module based on the ctypes foreign function library and providing python function interfaces and classes. Together with other Python numerical and data plotting libraries such as SciPy and matplotlib, PLASMAKIN allows a fast and efficient analysis of plasma physics problems.
        Speaker: Nuno Pinhão (ITN)
        Paper
      • 12:00
        ThanCad: 2dimensional cad for engineers 30m
        ThanCad is 2dimensional CAD aimed to meet the, ever growing, specific needs of civil and surveing engineers. It is largely command compatible with the leading commercial CAD, but it differtiantes to a few concepts such as hierarhcical layers, and lack of elements attributes, which is the CAD equivalent to structured programming. ThanCad adds some productivity tools such as line continuation, layer selection and cross-save/read undo mechanism. ThanCad harnesses the power of Python to shrink the development time and the volume of code; to implement and test new ideas in virtually no time; to make ThanCad programmable without the need of separate libraries, plug-ins, special languages, or special OSes; to make 32bit/64bit processor, OS and OS version irrelevant. ThanCad uses Tkinter, the defacto GUI/drawing standard for python, in order not to reinvent the wheel and to achieve platform independence. Several concepts were addressed such as compound elements, text in arbitrary directions, cursor/crosshair, zoom, image zoom, coordinate systems tracking, image resolution, draworder, object snap, different element intersection, mouse wheel windows/linux differences, input from command window and/or GUI, hierarchical modal windows. Finally, ThanCad uses Python's object oriented programming, but sometimes it follows the Zen of Python and the Linux kenel's philosophy, practicality beats purity.
        Speaker: Prof. athanassios stamos (engineering)
        Paper
    • 12:00 12:30
      Education Alpha

      Alpha

      Vilnius, Lithuania

      • 12:00
        Tux Droid, a python-fueled robot 30m
        Tux Droid is a tux-shaped robot wirelessly controlled from a computer running Linux. It can talk and move, but also listen and react to events. The wireless link is the key here, it provides Tux Droid with access to all the power of Python. Python’s interpreter is of great help if you don’t have any clue about programming languages and would like to make your first steps into robotics and programming. Simple scripts to control your robot are really at your fingertips. You can easily stream music and sounds to and from Tux Droid, blinking the eyes, wave the flippers, spin, send and receive IR codes or detect if the head button is pressed. Tux Droid’s embedded processing is only meant to interface sensors and actuators. But by developing a complete python API, we can leverage the embedded basic set of features to get a complex robot which can bring life to your applications and act as a desktop companion. Something advanced python users will also have fun with.
        Speaker: Mr David Bourgeois (KySoH)
    • 12:30 14:00
      Lunch 1h 30m CERN

      CERN

    • 14:00 14:30
      Education Zeta

      Zeta

      Vilnius, Lithuania

      • 14:00
        Pythonic Math 30m
        My paper for EuroPython 2005 explored what I call Pythonic Mathematics, a way of presenting pre-computer analytical content within the OO paradigm, including pre-college.[1] This thinking informed my participation in Shuttleworth Foundation planning meetings and presentation to the London Knowledge Lab in the following year.[2] This year, I'm delving yet more deeply into Pythonic Math, while also weaving in some more cultural threads, especially the "design science" thread with its geodesic spheres and other graphical content, the theme of my OSCON 2005 presentation.[3] I've been field testing these combinations in my home town of Portland, through a school called Saturday Academy.[4] Whereas Guido named Python for Monty Python, begetting allusions which aren't going to go away, there's more we might do to make our snake come across as charming and smooth, not too slimy or oily (negative attributes customarily associated with snakes by the more snake-unfriendly).[5] [1] http://www.4dsolutions.net/presentations/urner_europython4.pdf [2] http://www.bfi.org/bfi_community/pythonic_mathematics_talk_by_kirby_u rner [3] http://worldgame.blogspot.com/2007/01/reviewing-my-oscon-2005-talk.ht ml [4] http://www.saturdayacademy.org/ [5] http://worldgame.blogspot.com/2007/06/pro-python-propaganda.html
    • 14:00 15:30
      Open Space Lambda

      Lambda

      Vilnius, Lithuania

      • 14:00
        Open Space 1h 30m
    • 14:00 15:30
      Python Language and Libraries Alpha

      Alpha

      Vilnius, Lithuania

      • 14:00
        PyPy 1.0 and Beyond 1h
        PyPy released 1.0 in March of this year. PyPy contains a very compliant Python interpreter, and with 1.0 the first incarnation of a Just-In-Time compiler which is generated from the interpreter automatically with novel techniques. In this talk we are going to give a brief introduction to PyPy and its motivation. After recapitulating PyPy architecture we are going to give an overview of how the JIT generation is achieved, through examples and introducing the general ideas. In the last part we are going to reflect on the current status of PyPy's Python interpreter and our thoughts about its future and further progress on the JIT compiler.
        Speakers: Mr Armin Rigo (PyPy), Mr Samuele Pedroni (Open End AB)
      • 15:00
        PyPy Python Interpreter(s) Features 30m
        We quickly recap the basic architecture of PyPy Python interpreter(s) and then demo and discuss the following unique features: * transparent proxy: a way to customize behaviour of builtin objects, enabling new models of persistence and distribution * distribution prototype: have objects from remote places appear as local ones, including frames (PDB!), file objects etc. * object tainting: automatically track and control propagation of sensitive data through an application * lazy computations: defer computation until result is needed * ... and more, as talk topics/features might appear just-in-time :) All above features might be translated to any supported backend, which is by now C, LLVM and CLI, soon JVM. We'll also see to discuss future efforts and remaining obstacles to reach wider adoption.
        Speakers: Holger Krekel (merlinux), Maciek Fijalkowski (merlinux)
    • 14:30 15:00
      Python Language and Libraries Zeta

      Zeta

      Vilnius, Lithuania

      • 14:30
        Optimizing MySQL 30m Zeta

        Zeta

        Vilnius, Lithuania

        How to make MySQL go fast, from someone who was involved with the project before it had a name.
        Speaker: Mr David Axmark (MySQL)
    • 15:00 15:30
      Open Space Zeta

      Zeta

      Vilnius, Lithuania

      • 15:00
        Open Space 30m
    • 15:30 16:00
      Break 30m CERN

      CERN

    • 16:00 17:30
      Agile Experiences and Testing Alpha

      Alpha

      Vilnius, Lithuania

      • 16:00
        py.test: towards interactive, distributed and rapid testing 30m
        We'll talk about py.test, an advanced and easy-to-use Python-based testing tool, aiming to speed up and integrate testing, development and documentation efforts. py.test is a mature tool and used in many projects. We will briefly present highlights of both long-standing and new features (since ep2006): * cross-project external tool for collecting and running application tests * minimal boilerplate approach, write and deploy first test in 60 seconds * ad-hoc distribution of tests on many computers (e.g. by ssh invocations) * generated AJAX application to report multi-host test events * document Python functions with type information tracked at test-run-time * project specific test configurations allow extensions such as: - documentation syntax and referential integrity checks - ad-hoc driving of Windows GUI acceptance tests from Linux - JavaScript Regression tests on PyPy's emerging JavaScript interpreter There are several more features and ideas being considered currently ... all aiming to create a more effective, interactive and joyful test-driven development process ... which we'd like to discuss with the audience and test-tool developers and users.
        Speakers: Maciej Fijalkowski (merlinux), holger krekel (merlinux)
      • 16:30
        unittest is Broken 30m
        In this paper I examine the shortcomings and core design flaws of Python's standard unittest module, focusing specifically on the programmer's ability to extend unittest. I then discuss the requirements for an extensible testing framework and introduce test_harness, an alternative framework designed from the ground up to address these fundamental issues. Finally, examples drawn from real-world, unittest-based test suites are reformulated using test_harness to demonstrate the power of the new framework.
        Speaker: Collin Winter (Google)
        Paper
      • 17:00
        A practical example of Test Driven Development for a GUI using wxPython 30m
        I will show a step by step example of building a small user interface using wxPython. The example will only be marginally related to wxPython itself and, even though previous background won't be necessary, it'll be explained only as much as necessary to understand the rest of the talk. The goal is to show the practice of Test Driven Development. The code will follow the Model View Controller pattern and testing will be making use of mock objects, in order to simulate the View.
        Speaker: Mr Stefano Masini (Pragma 2000)
    • 16:00 17:30
      Open Space Lambda

      Lambda

      Vilnius, Lithuania

      • 16:00
        Open Space 1h 30m
    • 16:00 17:30
      Open Space Zeta

      Zeta

      Vilnius, Lithuania

      • 16:00
        Open Space 1h 30m
    • 17:30 17:45
      Break 15m CERN

      CERN

    • 17:45 18:45
      Keynotes Alpha

      Alpha

      Vilnius, Lithuania

      • 17:45
        Keynote by Simon Willison 1h
        Speaker: Mr Simon Willison
    • 09:00 10:30
      Business and Applications Theta

      Theta

      Vilnius, Lithuania

      • 09:00
        3D Geo-portal Visualization Software for Control Rooms in the Oil and Gas Industry using Python 30m
        Off-shore operations in the oil and gas industry are becoming increasingly expensive and complex. One of the strategies to overcome this development is to create operation centers on-shore. Centralizing the control of oil-fields allows field-managers to make optimal decisions in a global scale. However, the amount of information they must process increases dramatically. We present the application Vispo3D Operations. Vispo3D Operations ties together information from various data sources and provide an overview of the current situation in the North Sea. The decision making is facilitated by providing 3D visualization for various aspects in oil-rig management, such as the simulation of the current weather conditions. The application is implemented almost exclusively in Python. Due to the novel and challenging requirements of the project for both developers and customers, Python proved to be a valuable tool for Rapid Application Prototyping and more importantly for explorative development. The original plan was to re-implement the whole solution in C++. However, the Python version proved to be sufficiently responsive and adequate, very flexible and especially adaptable with regards to the changing requirements. Vispo3D Operations makes use of Kongsberg SIM's mature 3D visualization libraries and toolkits collectively named Coin3D. Coin3D is a high-level, retained-mode visualization suite for effective 3D graphics development, which is cross-platform, open source and without any royalties or run-time fees for professional licensees. Consequently, Python bindings for Coin3D, called Pivy, were created to interface with the Coin3D C++ libraries. PyQt from Riverbank and Qt from Trolltech are used for the graphical user interface. CherryPy, a pythonic, object-oriented HTTP framework, is used for client server communication, as well as serving a web-interface for off-shore users. The data itself is stored in SQLite databases, which is fetched through XML-RPC from the clients. The decision to use Python proved to be very rewarding and allowed us to cope with the changing and demanding requirements from the customer with ease. The successful usage of Python within this project convinced upper management to leverage the advantages and benefits of Python for further upcoming new projects.
        Speakers: Mr Rolv Seehuus (Kongsberg SIM), Mr Tamer Fahmy (Kongsberg SIM)
      • 09:30
        Python for Industry and the ORDID Project 30m
        Sia and S3 focus their work on supplying both low level and high level systems solutions for industrial partners. This year SIA started a research project with the university of Verona to improve it's applications and solutions named ORDID: Upper-level Ontology-Driven Interpretation of Raw Data. The project aims at looking for new and inovative construction of high level symbol grounding techniques to replace the traditional techniques used before, executing ontologic schemas to guarantee interoperability. The talk will look into the role played by Python into SIA, S3 and the ORDID project itself.
        Speakers: Elisa Burato (Verona University), Fabio Pliger (SIA s.r.l.)
        Slides
      • 10:00
        Twisted and Zope in real time monitoring for oil and gas industries 30m
        An innovative company in the South of England has produced the first safe way to remotely monitor oil and gas wells wirelessly. They'd built the hardware and now urgently needed software so they could demonstrate their product at a trade show. Riverhall Systems used Twisted, Zope and a home-grown graphics server to produce a useful demonstration which was used successfully at the event. Twisted handled the real-time communication with the wireless monitors and also provided an RPC interface to a data logger. The control and reporting front-end was written in Zope. Our graphics server, also written in Python, created the dials and charts in real-time.
        Speaker: Mr Dale Strickland-Clark (Riverhall Systems)
    • 09:00 10:30
      Python Language and Libraries Lambda

      Lambda

      Vilnius, Lithuania

      • 09:00
        RPython: Need for speed aka C and C# considered harmful 30m
        Restricted Python (RPython) is a subset of a Python language designed to be compiled into lower-level languages, suitable for direct compilation into C, CLI, JVM or others. RPython cuts some of python dynamism (allows for full type inference and creation of flow graphs), but doesn't require explicit type annotations. Results might be up to 300 times faster than the original python program. Although it was born as an implementation detail of the PyPy interpreter, experience showed that it can be useful by itself. This talk will present some typical RPython's use cases, including: * how to write a standalone executable in RPython. * how to write an extension module for CPython. * how to produce .NET libraries/executables as fast as C# * how to write AJAX applications without a single line of Javascript. (and with tests!) * how to create bub-n-bros client in just few lines of code running on a browser :-)
        Speakers: Antonio Cuni (DISI - University of Genoa), Maciek Fijalkowski (merlinux)
      • 09:30
        How our Python trading platform got 40 times faster by switching to RPython 30m
        At EWT we develop systems that trade stocks on the electronic exchanges. The idea is that a computer can augment a human trader's reflexes by responding to market movements on the millisecond timeframe. This year we made the transition from python to rpython. We found that not only is our turnaround much faster but the code itself is able to be cleaned up as performance critical hacks are not needed anymore. RPython: it's here, it's useable in real world situations, and it really rocks. RPython feels like writing C (C++/C#/Java) code in python. Since it is almost entirely a subset of python it's like being able to run dangerous C code in the safe confines of a python interpreter. RPython is also a powerful lint checker: many bugs are now caught at compile time. As well as some info on EWT and the general rpython experience I will talk about * the transition process, ideas for how to migrate a python system to rpython, when not to, and debugging. * Also, we will mention the to-be-released RIO: a high performance rpython buffer/networking library based on Java's NIO. * finally, we present some examples of using ctypes to interface to external libraries, including embedding python itself, and also using cairo and libsdl for graphics.
        Speakers: Mr Richard Emslie (???), Mr Simon Burton (EWT LLC.)
        Slides
      • 10:00
        The Essentials of Stackless Python 30m
        This is a re-worked, actualized and improved version of my talk at PyCon 2007. Repeating the abstract: As a surprise for people who think they know Stackless, we present the new Stackless implementation For PyPy, which has led to a significant amount of new insight about parallel programming and its possible implementations. We will isolate the known Stackless as a special case of a general concept. This is a Stackless, not a PyPy talk. But the insights presented here would not exist without PyPy's existance.
        Speaker: Christian Tismer (tismerysoft GmbH)
    • 10:00 10:30
      Python Language and Libraries Alpha

      Alpha

      Vilnius, Lithuania

      • 10:00
        Applications of python win32console module - a merging of character-mode applications and graphical user interfaces. 30m
        With the recent addition of the win32console module in python it is now possible to create GUI applications that have embedded console sessions. The win32console module is a wrapper around the Microsoft Windows console API which is the operating system component that enables character-mode applications to display data to a windows console. The most typical console mode application on Windows is the cmd.exe command line interpreter. By utilizing the capabilities of the win32console module, it is now possible to embed and enhance routine command line/shell interactions by the use of GUI applications. Examples of embedding cmd.exe sessions would be: - wxPython based shell acting as a console replacement - Divmod Nevow web pages using "server-push/comet" technologies as an interface around a remote console session - cmd.exe session running in a Vim buffer It is not only cmd.exe that can be embedded but any other character-mode applications such as a Cygwin shell or even the python or iPython interpreters. The basic process flow is described as: - Client process (1) such as wxPython or Vim editor starts an intermediary control process (2). - The intermediary control process (2) is a child python process which imports win32console and allocates its own private console. - This control process (2) then starts the target character-mode application (3) such as cmd.exe or python.exe. - The control process (2) installs WinEventHook functions which are triggered whenever the target process (3) or any child processes of the target process write text to the console of the control process. - The control process (2) traps the console output and then relays it the client process (1) by means of shared memory and event synchronization. - The client process (1) can also generate command line input via shared memory to the control process (2) which then writes it into the input buffer of the target process (3). From the perspective of the wrapped console process (cmd.exe or python.exe interpreter for example) there is nothing to distinguish its input as coming from an interprocess communication mechanism versus a person typing on a keyboard. Likewise there is nothing different in the output statements of the wrapped console process since it is just doing standard console output. The use of the win32console module wrapping the Windows console API simplifies interaction with the console processes since they will be running in their native command-line mode with no modifications required. Technical discussion with slides and demonstrations will be presented.
        Speaker: Mr Michael Graz (ITG London)
    • 10:30 11:00
      Break 30m CERN

      CERN

    • 11:00 12:00
      Business and Applications Lambda

      Lambda

      Vilnius, Lithuania

      • 11:00
        Python Development Case Study: Enso Autocomplete 30m
        Enso is a user-interface enhancement product created by Humanized (http://www.humanized.com) and is somewhat unusual in that it's an application written almost entirely in Python meant to be downloaded and installed locally by non-technical users. This spring, driven by user feedback, Humanized began upgrading Enso with a new auto-completion algorithm. This project presented several major challenges in UI design, algorithm design, performance, and testing. In this talk, I will present a case study of these challenges and how we overcame them. Specific topics of interest to Python developers will include: UI design: how to create an auto-completion algorithm (i.e, one that correctly guesses the user's intended command from a minimum number of keystrokes) that is efficient, learnable, and respects the user's habits. Development and deployment methodology: How Python enabled an agile cycle of quick prototyping and integration, limited beta release, and rapid user feedback, and how user input drove our process. Performance: algorithmic efficiency, how to achieve acceptable response times in Python, the profiling tools we used to identify hot-spots, and the techniques we used to defeat them.
        Speaker: Mr Jonathan DiCarlo (Humanized, Inc.)
      • 11:30
        Python in a large commercial application 30m
        In this presentation, I will talk about our experience with using Python as the main programming language in the development of Tideway Foundation, a product that helps large enterprises understand and manage the truth about their complex IT environments. Foundation automatically generates dependency information about hardware and software within an environment, involving accessing target machines with a wide range of techniques, working out what the information retrieved means, and storing it in a highly-interconnected object database. The presentation will cover areas in which Python has served us well, and areas where we have encountered both technical and non-technical limitations with Python.
        Speaker: Dr Duncan Grisby (Tideway Systems Ltd.)
    • 11:00 11:30
      Business and Applications Alpha

      Alpha

      Vilnius, Lithuania

      • 11:00
        How to do an EU open source research project 30m
        We'll look at how to do an EU research project, based on experiences obtained through the PyPy project. We quickly walk through the basics of the initial proposal, negotiations, the EU funding contract, cost/funding models and how we modified and amended the contract afterwards. The PyPy project has been one of the first bigger open source research projects that received funding from the EU - a liaison of diverging cultures, as it turned out. We had to learn how to manage this project: track/report results, budget, 'resources' to match our contractual obligations, but also make the EU contract and circumstances fit our needs and actual project developments. We'll highlight how the finalisation process with the EU (still pending for 31st May and following) worked out, summarize our findings and give some recommendations maybe helpful for other projects and organisations applying for EU Research funding.
        Speakers: Lene Wagner (merlinux GmbH), holger krekel (merlinux GmbH)
    • 11:00 11:30
      Games Theta

      Theta

      Vilnius, Lithuania

      • 11:00
        Taking advantage of multiple CPUs for games - simply. 30m
        Taking advantage of multiple CPUs for games --- simply, is the topic of this paper. Using a simple interface that many are already familiar with --- Pythons 'map' function. It talks about how to avoid the Global Interpreter Lock (GIL) limitation in Pythons threading libraries. As well as how to choose which parts of a game to thread. Finally it shows how easy it can be, by converting a full pygame to make use of multiple CPUs --- and benchmarking the game.
        Speaker: Mr Rene Dudfield (???)
        Paper
    • 11:00 12:30
      Open Space Zeta

      Zeta

      Vilnius, Lithuania

      • 11:00
        Open Space 1h 30m
    • 11:30 12:30
      Agile Experiences and Testing Alpha

      Alpha

      Vilnius, Lithuania

      • 11:30
        PyPy: Why and how did it (not) work? 30m Alpha

        Alpha

        Vilnius, Lithuania

        Some people have said that they have hardly seen a large project succeed with delivering to the original goals as much as the PyPy project did. Others consider it a failure because it did not take over the world yet or is not usable for mainstream purposes. Anyway, we'll talk about the mix of development processes, methods and infrastructure of the PyPy project. We will summarize our experiences regarding the evolving development environment (version control, automated test-driven development, sprints, synchronization, "conceptual integrity", communication channels). We will also try to share our "learning by burnings" so that other projects can explore other creative problems and mistakes than maybe repeating the ones we explored in depth already during the last 4 years of PyPy development.
        Speakers: Mrs Beatric During (Change Maker), Mr Holger Krekel (merlinux GmbH)
      • 12:00
        Sprinting offline with bzr, dbus and avahi 30m Alpha

        Alpha

        Vilnius, Lithuania

        Speaker: Mr Robert Collins (Canonical Limited)
        Slides
    • 11:30 12:30
      Python Language and Libraries Theta

      Theta

      Vilnius, Lithuania

      • 11:30
        Integrating Python and TeX: MathTran and beyond 30m
        This talk describes the MathTran system for translating mathematics from TeX to MathML and vice versa, and its use of TeX as a daemon. It surveys related Python and TeX software, and calls for the creation of standard Python library modules as a means of unifying and simplifying these projects. Finally, it shows how Python can be used to script TeX typesetting and use TeX as a callable function.
        Speaker: Dr Jonathan Fine (The Open University)
      • 12:00
        Python Data-Driven Parsing For The Real World 30m
        Data-driven parsers have been used in AI and inductive reasoning in ways beyond the abilities of rule-driven parsers. This paper presents an annotated bibliography and guidelines for developing multipurpose data-driven parsers in hopes that developers will assist the author in disaster recovery and OLPC development, will push Free Open Software to new heights, and will benefit from commercial opportunities. Data-driven parsers of the highest types don't require a predetermined set of rules like rule-driven parsers do. This is most like discovery learning that maybe helps children to learn their first language so easily and fluently. The author contends this same type of learning is necessary for natural responses to a wide variety of real world situations. The data drives the progress and in the higher types can change goals just like it real life. Rule driven parsers are primarily useful in closed languages such as computer programs where the parser developer can know all of the rules before starting. Declarative programming will also be briefly described. This is an underused part of Python's flexibility but the basis for some data-driven parsers.
        Speaker: Dr Johnny Stovall (Dr. Stovall Foundation for Practical Education and Social Development)
        Paper
    • 12:00 12:30
      Games Lambda

      Lambda

      Vilnius, Lithuania

      • 12:00
        Pyweek: Making games in 7 days 30m
        The objective of this talk is to encourage people to participate in pyweek. We explain what the contest is, when it takes place, who can and does participate and why everybody should. A quick review of the most unique games is given, plus an account of the fun experience we had developing our entries. We also talk about how python is the perfect match for this kind of tight schedules, and about what the contest brings back into the python community.
        Speakers: Alejandro J. Cura (Python Users Group, Argentina), Lucio Torre (Python Users Group, Argentina)
    • 12:30 14:00
      Lunch 1h 30m CERN

      CERN

    • 14:00 15:30
      Agile Workshops Alpha

      Alpha

      Vilnius, Lithuania

      • 14:00
        Arlo Belshee: Safe Is For Weenies 30m
        Speaker: Mr Arlo Belshee
      • 14:30
        Arlo Belshee: Agile Adoption 30m
        Speaker: Mr Arlo Belshee
      • 15:00
        Arlo Belshee: Appraising The Loot 30m
        Speaker: Mr Arlo Belshee
    • 14:00 15:30
      Business and Applications Lambda

      Lambda

      Vilnius, Lithuania

      • 14:00
        If you can't beat them ... Pythonic explorations of Microsoft Sharepoint Portal Services 30m
        The majority of office workers use ... Microsoft Office! Especially in intranet enviroments. Things, especially versioning and tracking of changes, can go horribly wrong when people start working together, sending eachother Office documents. To accomodate this problem, Microsoft came up with Sharepoint. A full-blow Sharepoint implementation can get horribly expensive. However, the basic functionality of Sharepoint is a free addition to Windows Server 2003 under the name Sharepoint Portal Services. During this talk a general introduction on Sharepoint will be given, followed by an exploration of the way the Sharepoint Services can be leveraged from the python world.
        Speaker: Mr Jan Murre (Pareto)
      • 14:30
        py2exe, dbimport - ways of Python distribution on Windows 30m
        Windows-Users are generally accustomed to "point, click, destroy" installation. Distributing .py files and installing the interpreter is often no-go. We will look into some samples of the great tool py2exe. dbimport is some lines of code to update Python applications within closed environments.
        Speaker: Mr Harald Armin Massa (GHUM Harald Massa)
      • 15:00
        Managing Source Code with Bazaar 30m
        Bazaar is a safe, friendly, free and fast distributed version control system. (will add more here soon)
        Speaker: Mr Michael Hudson (Canonical)
    • 14:00 15:30
      Open Space Zeta

      Zeta

      Vilnius, Lithuania

      • 14:00
        Open Space 1h 30m
    • 14:00 14:30
      Python Language and Libraries Theta

      Theta

      Vilnius, Lithuania

      • 14:00
        Streaming with Python, Twisted and GStreamer 30m
        Flumotion is a GPL streaming media server written in Python. It is distributed and component-based: every step in the streaming process (production, conversion, consumption) can be run inside a separate process on separate machines. Flumotion uses Twisted and GStreamer. Twisted enables the high-level functionality, distributing components over the network. GStreamer, through the Python bindings, enables the high-speed low-level functionality: actual media processing. Flumotion uses a central manager process to control the complete network; one or more worker processes distributed over machines to run actual streaming components; and one or more admin clients connecting to the manager to control it. Flumotion is under very active development. In its latest stable release (0.4.2), it already supports the following features: - various sources: webcams, soundcards, TV cards, Firewire cameras, looper - various codecs: Vorbis, Theora, mulaw, JPEG, smoke - various containers: Multipart, Ogg - synchronized capturing across machines - username/password authentication - overlaying, colorbalance - HTTP streaming, disk archiving - administration GUI with a wizard for the most basic scenario - ncurses-based administration - code distribution from a central location - local caching of the distributed code space - strong focus on ease of use and usability - improved support for network failure and reconnection - multiplex all component feeds through only one port on the worker - sharing HTTP port among streamers - support for GStreamer 0.10 The current design allows for the following future features: - any number of sources/containers/codecs/effects/protocols to be added - completely centralized code upgrades - complete code upgrades with minimal downtime - any kind of authentication mechanism (key exchange, challenge/response, ...) - any number of possible scenarios for actual content production and distribution - manager failover and state replication - loadbalancing streams over different servers or from different locations - internal stresstests Some of the features are only possible or easily implementable thanks to using a high-level language like Python: - sending GUI code for the wizard and component administration from the manager to the admin client, making the admin GUI a lightweight shell - sending component code to any of the workers over the wire at startup - rebuilding modules and reloading code on the fly while running; allowing for a distributed code upgrade without losing clients - rapid development of new components, allowing to catch up with and eventually to keep one step ahead of the competition - easy networking code thanks to Twisted In this project, we came up with solutions to specific problems presented to us that would be interesting to share with others. - all code is stored centrally and partitioned into "bundles" which are cached by clients who need them. Versioning and dependencies are correctly handled, and to the code being run this is handled transparently. Code can still import as if it were one big file tree. - the manager sends GUI code to an admin client and component code to a worker. The GUI code running on the admin machine then controls the behaviour of code running on the worker machine by going through the manager machine - state of components is automatically replicated one level deep to the manager, and two levels deep to all connected admin clients - authentication of any service in the network is handled by creating keycards which can be exchanged between all processes, implementing any type of challenge/response authentication as securely as possible. - Twisted's Perspective Broker was extended to use this generic keycard concept instead of the current (limited) username/password credentials. - the open-ended nature of Twisted and GStreamer is difficult to harness into a usable GUI. The wizard provides a good way of crystallizing all possibilities into a sensible task-based presentation. The design of the wizard also incorporates the flexibility of the network distribution and the dynamic code distribution by pulling in the necessary GUI code for the next step based on previous choices. - moving to run-time checks of functionality as opposed to compile/configure-time. Since the server can be distributed over any number of machines, and actual components have different run-time needs, all checks for features (devices, required libraries, versions, permissions) Python also presents some specific challenges when used in a large project as compared to more low-level languages. When handled right, these can actually be turned into project engineering advantages. Python's weak argument typing forces developers to document the API correctly. Python's dynamic nature (running code from received chunks, extensive subclassing) and Flumotion's design (componentized functionality, lots of small pieces of code sent back and forth) forces us to aggressively write unit testing for all functionality.
        Speaker: Mr Thomas Vander Stichele (Fluendo)
    • 15:00 15:30
      Science Theta

      Theta

      Vilnius, Lithuania

      • 15:00
        Managing and displaying user track data with Python 30m
        User studies that feature user movement in the real world or in simulated environment generate datasets, usually in the form of logfiles, that need to be stored, summarized, processed and represented. Datasets must additionally include metadata that accounts for experimental conditions. We have developed a class that produces graphical displays of user travels over a regularly-spaced grid, and a set of web-controllable database management tools that allow incremental data exploration as the user experiments progress.
        Speaker: Mr Walter Aprile (Scuola Superiore Sant'Anna)
        Paper
    • 15:30 16:00
      Break 30m CERN

      CERN

    • 16:00 17:00
      Lightning Talks Alpha

      Alpha

      Vilnius, Lithuania

      • 16:00
        Lightning Talks 1h
    • 17:00 17:15
      Break 15m CERN

      CERN

    • 17:15 18:15
      Keynotes Alpha

      Alpha

      Vilnius, Lithuania

      • 17:15
        Keynote by Guido van Rossum 1h
        Speaker: Mr Guido Van Rossum
    • 18:15 20:00
      break 1h 45m
    • 20:00 23:59
      Social events
      • 20:00
        Conference dinner 3h 59m
    • 09:00 10:30
      Agile Workshops Alpha

      Alpha

      Vilnius, Lithuania

      • 09:00
        Arlo Belshee: Promiscuous Pairing 30m
      • 09:30
        Arlo Belshee: The XP Sprint 1h
    • 10:30 11:00
      Break 30m CERN

      CERN

    • 11:00 12:30
      Agile Workshops Alpha

      Alpha

      Vilnius, Lithuania

      • 11:00
        Arlo Belshee: The XP Sprint 1h
    • 11:00 12:30
      Open Space Lambda

      Lambda

      Vilnius, Lithuania

      • 11:00
        Open Space 1h 30m
    • 11:00 12:30
      Open Space Zeta

      Zeta

      Vilnius, Lithuania

      • 11:00
        Open Space 1h 30m
    • 12:00 12:30
      Python Language and Libraries Theta

      Theta

      Vilnius, Lithuania

      • 12:00
        Measuring Python Performance 30m
        "Make it work, ... then make it fast". "If you can't measure it, it doesn't exist." Both useful adages, but how do you measure the performance of a Python program and identify bottlenecks? In my talk I'll start with generating simple timing numbers and how to interpret the results. I'll show how to use Python's profiler and convert the results for kcachegrind, a KDE profile visualization tool. Sometimes function-call level information is too detailed or otherwise inappropriate so I'll show how to instrument and create higher level traces for kcachegrind. I used all of these techniques while consulting for AstraZeneca's R&D group. I'll base many of my examples on that experience, and describe some of ways to improve overall performance.
        Speaker: Andrew Dalke Dalke (Dalke Scientific Software, LLC)
    • 12:30 14:00
      Lunch 1h 30m CERN

      CERN

    • 14:00 15:00
      Keynotes Alpha

      Alpha

      Vilnius, Lithuania

      • 14:00
        Keynote by David Axmark 1h
        Speaker: Mr David Axmark
    • 15:00 15:15
      Break 15m CERN

      CERN

    • 15:15 15:45
      Future Of EuroPython Plenary Session Alpha

      Alpha

      Vilnius, Lithuania

      • 15:15
        Future of EuroPython Plenary Session 30m Alpha

        Alpha

        Vilnius, Lithuania

    • 15:45 16:00
      break 15m
    • 16:00 17:45
      Lightning Talks Alpha

      Alpha

      Vilnius, Lithuania

      • 16:00
        Lightning Talks 1h 45m