TALK ABSTRACTS


Birds of a Feather

Key Signing BoF

A meeting for users of OpenPGP and GPG.

Ciarán Mooney (University of Birmingham)

Meeting, one hour (General)

Come and strengthen the web of trust! OpenPGP is a cryptography standard that allows you to sign and/or encrypt your email, programs and data. In this BOF, you can learn about OpenPGP cryptography and existing users can present their OpenPGP keys to each other and digitally sign them. If you have always wanted to get into OpenGPG but did not how, then this is your opportunity!


Python Bloggers BoF

For people who blog about Python

Meeting, 30 minutes (General)

A BoF for people who write online about Python. Come and chat about writing, blog software, promotion and advertising.


OpenStreetMap

A BOF for OpenStreetMap users and contributors.

Meeting, 30 minutes (General)

OpenStreetMap creates and provides free geographic data such as street maps to anyone who wants them. This BOF is for contributors and potential contributors to OpenStreetMap. We may also chat about how Python programmers in particular can contribute (e.g. pyroute, pyrender, etc).


Database Programming

DataFinder: Organizing the Data Chaos of Scientists

Using Python software to manage data of large-scale simulations and experiments in aerospace.

Andreas Schreiber (German Aerospace Center (DLR))

Talk, 45 minutes (Beginner)

The DataFinder is a data management client developed in Python that primarily targets the management of scientific technical data. Data can be attached with individual meta data that is based on a free-definable data model to achieve data structuring and ordering. Moreover, the system is able to handle large amounts of data and can be easily integrated in existing working environments. The system is based upon a client-server-architecture and uses open, stable standards. One of its main features is the extensibility using Python scripts.

The talk gives an overview about the basic concepts of the DataFinder and demonstration of typical usage scenarios. Additionally, our experiences developing such a system using the Python programming language is presented, including an overview over the used Python modules, for example the Open Source Python WebDAV library developed at DLR.


Software Design

Stop Complexity Breaking your Systems

Find out how to use domain-driven design patterns: entities, value objects and the England cricket team.

Rob Collins (Folding Software Ltd)

Talk, 45 minutes (Intermediate)

Too often, we have the best of intentions when a system design starts: keep it simple, apply the good design patterns where appropriate, and things will be fine. But over the months and years of a system’s life, complexity creeps up on you without anyone really noticing. Suddenly you realise that the code has become fragile: it’s very difficult to make a change without breaking something vital. Your estimates for minor enhancements are too long for management, yet still inadequate for the developers. In the worst cases, development just stops because all available time is spent bug fixing. Complexity has come upon you like the autumn floods, and complexity has won.

But there is an answer! Keep it simple. (But you were…) No, more simple than that. Really simple from the start. By applying the sandbags of domain-driven design patterns, you will be surprised at how much the flood of complexity can be held at bay. You will find out:

* The three distinct ways to find an object in your system

* How to know if an object needs an identity

* How to make it safe to share or copy objects

* How to group objects into useful aggregates

This will be useful to you working in any development language, but obviously our examples here will be shown in Python. We will apply these approaches to designing three systems suggested by the audience.

If complexity has stumped you, please arrange extra cover to hear a story of simple English cricket.


Games Programming

Stretching Pyglet's Wings

The evolution of techniques developed to display 2D vector graphics using OpenGL within Pyglet, for a three-month game project being developed full-time over Summer of 2008.

Jonathan Hartley (Resolver Systems)

Talk, 30 minutes (Intermediate)

An initial demo of 2D vector graphics using OpenGL from within Pyglet will be shown, using simple sequences of glBegin, glVertex, glEnd calls. This will be illustrated with live running code to produce some nice animations, including the simple rotation / scaling / translation transforms required to display a roving camera over a 2D world populated with various objects.

This application will be refined by switching to OpenGL indexed arrays, to examine the performance improvements this can bring. This is illustrated with running demos that show several orders of magnitude improvement in performance (hence rendered object density and complexity) over the first technique.

Finally, Pyglet's recent version 1.1 (currently in beta) introduces an interface to Vertex Buffer Objects (VBOs), which retains the performance of indexed arrays, while regaining some flexibility in the ability to create more complex animations, by dynamically modifying vertex positions, colors, or other attributes. This is used to make the previous demo more interesting by creating visual indicators that reflect in-game entities internal state.


Mobile Computing

Python on the OpenMoko Freerunner

Developing mobile Python applications for an open and flexible phone platform

Menno J Smits (Resolver Systems)

Talk, 45 minutes (Intermediate)

The OpenMoko project[1] has recently started selling the Neo Freerunner, an open mobile phone based on Linux. The phone contains an exciting range of hardware including accelerometers, GPS, Wifi, Bluetooth and USB host support making it an interesting platform for all kinds of embedded projects.

Perhaps best of all, Python is easily installed on the phone. There are Python bindings for the UI and the various hardware components. This allows for prototypes or full applications to be built quickly, even while on the move.

This talk will start with an overview of the Openmoko hardware and software. Next I will discuss how Python applications can be developed for the phone and demonstrate the development of a useful Python application.

[1] - http://www.openmoko.com and http://openmoko.org


Other

Open Space

Open Space - for informal Birds of Feather meetings

Meeting, 90 minutes (General)

Open Space is available for delegates to organise events - meetings, informal presentations, hacking, whatever you want, spontaneously. Maybe you go to a talk which sparks an idea relevant to your favourite project, then you could get interested people together and thrash out some ideas in Open Space. The space is there for every one to use as you wish. You arrange these informal events through the BoF point.

The idea of the BoF Point is that people who share common interests can find each other and meet informally. The BoF Point will be the notice board outside the (non-serving) bar in the Foyer. BoF people can then go into the Bar (if it is not taken by other BoFers), or they can move and hang out in one of the many little nooks and crannies in the venue. There will be more nooks and crannies since this year we are using the Adrian Boult Hall side of the building too.

New BoFs can be created by delegates on the fly, they can pin notices to the BoF point notice board. More than one BoF can happen at the same time, adds to the jollity and carnival feel.

BoFs are short, they are about swapping contacts and getting the idea floated. Things that are expected to take hours are better done as Sprints on the Monday/Tuesday.


Local_Groups - East Anglia and North West

Meeting, 45 minutes (General)

A chance for (actual and potential) Local Groups to get together, meet each other and get things going.

09:00 - Cambridge and East Anglia

09:20 - North West


Local_Groups - South East and North East

Meeting, 45 minutes (General)

A chance for (actual and potential) Local Groups to get together, meet each other and get things going.

09:45 - South East

10:10 - North East


Python in Action

The Advantages And Disadvantages Of Python In Commercial Applications

This talk will discuss the benefits that Python can offer in a small business environment as well as some of the pitfalls in the commercialisation of these solutions.

Anil Asokan (Instrumentel Ltd.)

Talk, 30 minutes (General)

This talk will present the application of Python based solutions to a number of research and development applications tackled by the University of Leeds spin-out company, Instrumentel Ltd.

This talk will discuss the benefits that Python can offer in a small business environment. The talk will cite specific solutions utilising packages and products such as Django, wxPython and several graphing packages used for real-time graphing.

The talk will go on to discuss some of the problems associated with the use of these tools within the confines of a small development team. Issues covered will be; the conflict between rapid prototyping and widget customisation, the plethora of available packages and selection criteria, the absence of satisfactory documentation, and the generation of lean and stable executables.

To date, Instumentel has released no commercial software. This is due to the inadequacies outlined in this talk.


Getting Warmer with Python

Using Python in science, to save the world

Nick Barnes (Ravenbrook Limited)

Talk, 45 minutes (General)

GISTEMP is a project of NASA's Goddard Institute for Space Studies for "Surface Temperature Analysis ".  They publish a set of software which computes the "global temperature anomaly"; example graphic: http://data.giss.nasa.gov/gistemp/graphs/Fig.A2.lrg.gif .  The software takes as input a series of direct temperature records from various stations around the world.  Clearly such a calculation is of huge importance to the current global climate change phenomenon.  We take a look at how Python is already used in GISTEMP and show how we aim to use Python to both clarify and verify the existing code.

Software is routinely used and created by a wide variety of scientists in the course of their research.  When that research is used in deciding global public policy, it is even more crucial than usual that the software is fit for purpose and can clearly be seen to be fit for purpose.  GISS have made good steps forward in this direction by publishing their source codes.  We have examined their source code, most of which is written in Fortran, and we have used Python to check intermediate work products and replicate various stages. Python's concise clarity makes it ideal for software which has to undergo public inspection.


Building publishing solutions with ReportLab

Learn to use ReportLab's open source and commercial Python libraries to generate sophisticated documents and data graphics on demand

Andy Robinson (Reportlab)

Tutorial, Half Day (General)

The ReportLab toolkit is a mature system for creating PDF documents and images, extremely quickly. This allows many businesses to transform processes by creating personalised documents to take away from web servers, and automating any publishing task that needs to be done repeatedly.

The tutorial will take you through creation of a wide variety of document types, using both teaching and real-world examples. It will cover all the main parts of the framework; the canvas, the page layout API and the graphics subframework, as well as some of the optional commercial modules such as PageCatcher and RML. We'll cover examples of...

- invoices, letters and account opening packs

- long documents such as manuals

- personalised travel brochures

- fund fact sheets and other data-rich graphical reports

- The reportlab/graphics subframework

The tutorial will also take a wider look at patterns and antipatterns in reporting projects, and tools that we have found helpful over the last 8 years.

Familiarity with Python and with our own open source library is a plus, but not required in any way.


Practical concurrent systems made simple using Kamaelia

Kamaelia is a tool that uses concurrency as a tool for making your software simpler to build and maintain. This talk will cover this for beginners perspective using a number of useful common problem domains.

Michael Sparks (BBC Research)

Talk, one hour (Intermediate)

Kamaelia is designed as a toolkit for making concurrent software systems that are maintainable using a component based approach very similar to Unix pipelines. It was originally designed for use in a network systems environment and so is designed with systems that are naturally highly concurrent in mind - mainly from the perspective of trying to make it simple to comprehend unknown systems.

The component based approach has proven to be extremely usedful, and applicable in a number of areas from network systems, through desktop applications, audio/video tools and transcoding pipelines. Our involvement in Google Summer of Code has proven to us that such systems can not only be built by relatively novice developers, but actually be a simpler way of writing software in the first place (at least for a significant number of problem domains).

This talk as a result aims to teach you how to get started with Kamaelia, building a variety of systems, as well as walking through the design and implementation of some systems built in the last year. Systems built over the past year include tools for dealing with spam (greylisting), through database modelling, video & image transcoding for a youtube/flickr type system, paint programs, webserving, XMPP, games, and a bunch of other things.

You should be able to go away from this talk and build systems that will naturally be multicore friendly.


Sharing Data and Services Safely in Concurrent Systems using Kamaelia

This topic covers how you find shared services and provide shared data pools safely in concurrent systems using Kamaelia, and will be demonstrated in a practical system designed to assist children with reading and writing.

Michael Sparks (BBC Research)

Talk, 30 minutes (Intermediate)

Kamaelia is designed as a toolkit for making concurrent software systems that are easy to build and maintainable by non-superhuman developers, using a component based approach very similar to Unix pipelines.

Whilst message passing and "shared" nothing systems like Kamaelia simplify many problems, sometimes you really do need to share data. (eg a single pygame display!) Unconstrained concurrent access to data causes problems, so Kamaelia has two problems: 1) How do you provide tools that enable access to shared data and services, 2) Do so in a way without making people's heads explode?

The results turn out to be well known, and understandable, and metaphors that will be explored in this talk will be finding resources inside an organisation, and version control. Specific technologies will include the use of services in a manner similar to simplified SOA, and a simplified minimal software transactional memory core.

These will be used and demonstrated in a handful of examples, including a real world example which enables children to learn to read and write. The aim of the talk is to explain the underlying concepts and how they are implemented in Kamaelia, such that new Kamaelia developers can take their understanding further, and others can scavenge the ideas and approach for their own systems.


Prepay Python: language of choice for an internet kiosk system

How, why & the experiences of using Python to delivery Ireland's first prepay internet kiosk system.

Oisin Mulvihill (Folding Software Limited)

Talk, one hour (General)

Python-based internet kiosk system

* Learn how test driven development in Python was used to implement, maintain and refactor the kiosk system.

* You'd like to see how Python was used to control internet usage.

* See how Python was used to deliver a distributed kiosk system from scratch in only 7 months.

Python for kiosk and server applications - you’ll see how:

* to connect kiosk, using one-time PIN numbers

* a Web Based admin GUI provides status screen

* to instruct the remote kiosks to connect home

* to use Python to set up a customised single disk install of Fedora Linux.

Technologies used

* Pycrypto + XMLRPC to provide basic level hide communication between

* MySQL accessed via SQLObject/SQLAlchemy.

* Twisted based XML-RPC service.

* Twisted – pyGTK – Nevow+XUL Application

Build and Testing:

* Acceptance testing – A custom acceptance python framework to run simple scripts verifying each feature of the system.

* Continuous Integration – The excellent Buildbot written in Python.

Project Status

First installed in 2003, it is licensed currently to one of Ireland’s larger telecoms companies. The system has been running for five years with 20 sites and 100 machines distributed all over the Republic of Ireland.


Embedded Programming with Python

How Python helps in developing C programs for embedded microcontrollers.

David Jones (Ravenbrook Limited)

Talk, 45 minutes (Intermediate)

The Atmel ATtiny25 is a microcontroller with 8 pins, 2 KB of program memory, 128 bytes of RAM, and 128 bytes of EEPROM. It is available in a 4mm x 4mm package. Clearly executing Python on this device is not possible. But when developing programs for such devices, Python can be useful "around the edges". I give examples of how, in a recent project, I used Python to: analyse hex files that are used to program the flash memory; generate hex files for testing; analyse captured oscilloscope waveforms; encode and decode serial format data.

The result is a collection of short scripts each of which often has a very specific purpose. The Python code inside the scripts is fairly simple, at least the basic ideas should be accessible to a novice Python programmer.


Python Language

An Introduction to Python

This tutorial is aimed at people who may have some programming knowledge in other languages and who want a fast track into Python. If you have no Python experience, or have 'picked up' a little, it will suit you

John Pinner (Clockwork Software Systems)

Tutorial, Half Day (Beginner)

The tutorial will start by getting to know the Python interpreter and taking a look at Python's introspective features, moving onto data types, sequences and dictionaries. This will be followed by functions, classes and modules and by the end of the day you will know how to develop your Python knowledge further.


Developing with IronPython

An introduction to developing with IronPython and the .NET framework.

Michael Foord (Resolver Systems)

Tutorial, Half Day (Intermediate)

A tutorial on how to get started with developing in Python on the .NET framework.

It will cover the differences between CPython and IronPython, plus the details of interacting between IronPython and the .NET framework.

Some Python experience, but no experience of .NET will be assumed.

Topics to be covered (dependent on time):

* Using the Python standard library with IronPython

* The .NET framework (threading, .NET datatypes like enumerations, arrays and generics etc...)

* GUIs with Windows Forms

* Standard .NET libraries (XML, databases, web services, etc...)

* Writing web applications (in the browser) with Silverlight

* Extending IronPython with C#

* Creating an executable that launches your program


Python in Higher Education: One Year On

The experience of teaching programming with Python to a bunch of newbies

Tony Jenkins (University of Leeds)

Nick Efford (University of Leeds)

Talk, 45 minutes (General)

The de facto standard language for teaching programming in higher education is, surprisingly, Java. At the University of Leeds we are part of a growing number of universities teaching programming using something rather better: Python.

We taught Python to our first year students in 2007/08. The results were highly encouraging and sometimes amazing. Our best students produced extremely good work including multi-player networked games. Even better, students who we would have expected to struggle were able to produce work of which they could be proud. This experience is far removed from that we had with other, more caffeinated languages.

In this talk we will describe what we did and how we did it, and we will share some of the work produced by our students. We will also outline how Python is now set to become core to all our teaching.


PyPy's Python Interpreter - Status and Plans

Cool features, status and plans for PyPy's Python Interpreter.

Holger Krekel (merlinux gmbh)

Maciej Fijalkowski (merlinux GmbH)

Talk, 45 minutes (Intermediate)

In this talk we'd like to discuss the status and plans for the near and mid-term future of PyPy's Python Interpreter, particularly its upcoming 1.1 release. We'll look at what kind of applications you can already run and where more work and help is needed. The talk also aims to clarify what is the "PyPy technology cloud". There also should be room to discuss and demo some current highlights such as PyPy's robust virtualisation/sandboxing approach for Python programs.


In Search of Speed and Flexibility

PyPy and the Art of Generating Virtual Machines

Antonio Cuni (PyPy / University of Genova)

Talk, 45 minutes (Advanced)

We all want our favourite dynamic language to be faster, to be even more dynamic and to pick up nifty ideas from its peers.

But this is so much work!

There ought to be a better way to implement dynamic languages that enables growth and necessary change with less effort and more ease. Writing yet another interpreter in C or even Java is not it.

PyPy is a framework to implement dynamic languages that embraces this challenge. It allows us to write such languages in the form of simple interpreters, expressed in a rich subset of Python. This means that the resulting implementations can be evolved with reasonable effort.

PyPy then generates a variety of virtual machines (VMs) from a single source. We can therefore target a wide range of environments, including C/Posix, Java, or .NET. This avoids the major source of fragmentation within a dynamic language community -- the need for a separate language implementation for each virtual machine. It also means that languages as distinct as Python, Prolog and Smalltalk can share the bulk of our compiler machinery.

The flexible toolchain which is necessary for virtual machine generation turns out to be good for other things as well. Traditional implementations for dynamic languages have to make some very hard decisions early, which then become entrenched in the whole codebase, making it difficult or impossible to change later. It can be nice to experiment with different garbage collectors, but not if you have to write a complete new implementation of your favourite language for each one. With PyPy you don't have to. You can also generate and tailor a JIT-compiler for the language at hand, putting to rest the notion that flexibility must come at the expense of speed.

This talk will give a brief overview of PyPy architecture, then a more detailed explanation on how the JIT generator works.


Is Python Relevant?

Will Python ever really be mainstream or is the future entirely with JVM and CLR?

Russel Winder (Concertant LLP)

Talk, one hour (Intermediate)

Being PyCon UK, the conference is attended by people using or at least interested in Python: PyCon UK attenders are probably already convinced that Python is a good programming language. But is this true or self deception: is it actually a mass hallucination amongst conference attendees?

At PyCon UK 2007 I ran a session "The Great Language Debate" comparing and contrasting a few languages to investigate whether Python had what it takes technically. This PyCon 2008 session is not a rerun, or a continuation of that one, but is asking different questions. The biggest of these is "Why should I advocate using Python when Java, C, C++, C# and VB are the clear market leaders?"

Basically, if you are not working on "bare metal" or using the JVM or CLR then are you using the wrong technology? Does Python have any relevance to software development or is it a small self-sustaining ghetto that will survive but not be mainstream?

Does Python have a real place in the (brave) new multi-core world? What is the USP? Why should anyone learn it? Isn't Python just a procedural scripting language (cf. Lua) with object technology bolted on that cannot handle parallelism. OK Python is faster than Ruby, but does this matter? The bottom line: Why should I advocate using Python?


Generator Tricks for Systems Programmers

How to effectively use generators for variety of problems in systems programming.

David Beazley (Dabeaz LLC)

Tutorial, Half Day (Intermediate)

Generators and generator expressions are one of the most interesting language features added to Python. Yet, many Python programmers are unsure how they might use these features in a real-world application. This tutorial explores practical uses of generators with a variety of systems programming problems including processing large data files, handling real-time data sequences, parsing, threads, networking, and distributed computing.


Class Decorators: Radically Simple

Class decorators have the same utility as metaclasses but are simple enough to actually read and write.

Jack Diederich (Person at Large)

Talk, 30 minutes (Advanced)

Class decorators are a new feature in Python 2.6 and 3.0 that is as easy to use as function decorators but as powerful as metaclasses - and without the black magic. This talk is for all the people that have wondered if they need a metaclass but were frightened away. We cover the overlap between class decorators and metaclasses and their shared design patterns: Verify, Register, and Munge.

Examples include the same patterns implemented as both decorator and metaclass. The examples illustrate how decorators are easy to read, possible to write, and are immensely useful.


Core Python Containers -- Under the Hood

Look under-the-hood at the implementation of Python's container classes. Understand their performance implications. And walk away with a sound basic understanding of how they work and when to use them

Raymond D. Hettinger (Self-employed)

Talk, one hour (Intermediate)

Look under-the-hood at the implementation of Python's container classes. Understand their performance implications. And walk away with a sound basic understanding of how they work and when to use them.


The Savoury Flavors of Python 2.6 and 3.0

Learn about the feel of Python 3.0 and how it will change your coding experience.

Raymond D. Hettinger (Self-employed)

Talk, 90 minutes (Intermediate)

Code written for Py3.0 is much the same as that for Py2.5, but it has a different flavor and texture. With the removal of accumulated cruft, the new version of Python feels lighter and cleaner. We discuss what was removed and why. In their place, some new features were added. We discuss how the new tools elegantly overcome issues that have long challenged the language. Besides removals and additions, some aspects of the language were redesigned by changing their underlying concept. Those deep conceptual changes give the language its new flavour. We discuss the new concepts, why they arose, their benefits, and how to alter your world view accordingly. Lastly, we discuss the plan for how to migrate existing code so you can enjoy the benefits of Python's rebirth.


Descriptor Tutorial

Most of Python's advanced features are implemented with descriptors. Learning the descriptor protocol is the key to an advanced understanding of the language.

Raymond D. Hettinger (Self-employed)

Tutorial, 45 minutes (Intermediate)

Learn the descriptor protocol, see how it is invoked, examine real examples from the language, and learn to write your own.

Walk away with a sound understanding of methods, properties, super, classmethods, and staticmethods.


Norman - Back to the Future of Psyco?

This is some intermediate surrogate while you are waiting for PyPy.

Christian Tismer (tismerysoft GmbH)

Talk, 30 minutes (Beginner)

Psyco is the specialising compiler for Python, that was written by Armin Rigo. It started and was first presented in 2002 at EuroPython and was under active development until September 2005.

At that time it was declared dead and superseded by PyPy, which was expected to be the future of Psyco as soon as 2006. Since then, Psyco was supported by maintenance releases, but not further developed.

Reality had different timings, and people are waiting for a PyPy that is able to give the same performance boosts or better since then.

In order to fill this gap a little bit, Raymond Hettinger and I developed a couple of enhancements to Psyco, as sponsored open source work. We are supporting a number of new built-ins, with special effort given to generator support.

This talk gives an overview of Psyco's technology, its possibilities and limitations, explains the extensions that we did and what to expect in the near future.


Code Clinic

Group Code Review and Agony Aunt Problem Page

David Jones (Ravenbrook Limited)

Raymond D. Hettinger (Self-employed)

Meeting, Half Day (General)

Have you got problems with some Python coding? Would you like some help from your peers and our resident experts? Or have you got some ideas you'd like to show off? Bring your own code and have the group go over it and make suggestions for speed, clarity, technique, etc.

This is a really useful and enjoyable activity.


Large Scale Python

Cloud Computing and Amazon Web Services

Cloud computing is a new paradigm of building businesses on the web.

Simone Brunozzi (Amazon.com)

Talk, one hour (Intermediate)

After introducing concepts and key ideas behind Cloud Computing, the talk will provide details about AWS, Amazon Web Services, and some success stories from our customers, as well as some Python examples.

What is Cloud Computing? How Cloud Computing is changing the way businesses build their applications and manage their data?

Amazon.com provides cloud computing services to its customers: AWS, short for Amazon Web Services.

Here's the list of the main Amazon Web Services:

- Amazon Elastic Compute Cloud (EC2), providing scalable virtual private servers using Xen.

- Amazon Simple Storage Service (S3), providing Web Service based

storage for applications.

- Amazon Elastic Block Storage (EBS), a persistent storage to use with any file system, and in conjunction with EC2.

- Amazon Simple Queue Service (SQS), providing a hosted message queue

for web applications.

- Amazon SimpleDB, allows developers to run queries on structured data. It operates in concert with EC2 and S3 to provide the core

functionality of a database.

- Amazon DevPay, is a billing and account management system for

applications that developers have built atop Amazon Web Services.

- Amazon Mechanical Turk, a crowdsourcing marketplace that enables computer programs to co-ordinate the use of human intelligence to perform tasks which computers are unable to do.

The talk will then explain a few success stories of customers using AWS, and some Python examples.


Distributed Serpents: Python, Peloton and highly available Services

Distributed Service Oriented Architectures are an effective way of sharing code, providing easily accessible APIs and ensuring up-time in a world of failing hardware. Peloton is an Open Source project that aims to make D-SOA easy.

Matthew Pontefract (ReThought Ltd)

Talk, 45 minutes (General)

In many real business environments there is more than enough computing power not to have to worry about the last drop of efficiency, but a real need to have systems that are easy to keep up 24/7, trivial to upgrade on-the-fly and trivial to use by clients be they Excel programmers, C, Python, Perl or PHP.

Peloton makes it easy to write a service and distribute it across a cluster. High availability, easy parallelisation (in trivial cases) and dynamic load management are given out of the box. The result of a method may also be transformed on-the-fly using templates and code in a manner that completely separates the output from the method. This gives the flexibility to exchange data with other programs or to have the method result transformed into a snippet of HTML, an entire web page, an RSS feed or whatever you might wish for.

Combined with an event bus and robust session store and built on a bed of Twisted, this is a platform written for environments ranging from banking through visual effects to data processing sites. Proven in closed-source form, Peloton is the Open system that hopes to bring this easy flexibility to a wide range of environments.

In this talk I shall discuss the history of the project, how it works, how to use it and what we might be able to do with it.


Systems

Python and WMI

Using WMI under Python for administrative tasks on Windows

Tim Golden (CBS Outdoor UK)

Talk, 30 minutes (Beginner)

WMI is Microsoft's implementation of the Web-Based Enterprise Management (WBEM) and Common Information Model (CIM) standards. It offers a uniform API to all manner of system information about Windows, and 3rd parties can extend the information on offer by providing their own WMI classes in existing or new namespaces. WMI is COM-scriptable which makes it easily accessible to Python programs via the pywin32 win32com modules on local and remote machines.

Although the raw scriptable WMI is a little clunky and awkward, I have developed a Python module which wraps the API in a more Pythonic way making WMI programming much easier to write and to understand.

The talk will cover the reasons for using WMI over lower-level API calls; will outline the standard WMI namespaces and a series of common tasks solved by interrogating the WMI classes and calling their methods; will illustrate how to take advantage of the WMI event model to monitor systems; and will highlight some of the difficulties you may encounter especially with respect to security.


SCons, the Build Framework

A mini-tutorial on SCons and how to build stuff.

Russel Winder (Concertant LLP)

Tutorial, 45 minutes (Intermediate)

At PyCon 2007 I presented a session "Python is the Future of Build Systems". The aim then was to show that dynamic programming languages and internal domain specific languages (DSLs) were the way forward in build systems -- as opposed to building large m4-based macro packages. In that session I used SCons as an example of a build framework based on Python. After the session, many people suggested that it would have been good to have had more details about SCons. This session is therefore focussed on SCons as a build system framework and an example of a declarative DSL.


Python Package Management Sucks

At every layer, Python makes the development and deployment of packages harder than it needs to be. This talk will give the low down on the problems and some coping strategies for keeping sanity.

Chris Withers (Simplistix Limited)

Talk, 45 minutes (Intermediate)

The problems with Python's package management are deep seated and have a great history. This talk will cover the problem areas including distutils, setuptools, easy_install, the Python Package Index and offer some pleas for ways they could be improved.

Also it will be introducing buildout and virtualenv as coping strategies for dealing with the problems and hopefully keeping some of the lovely Python community with a little more sanity intact.


Testing

Testing with Mock Objects

Unit testing with Mock objects in Python - why and how.

Simon Brunning (ThoughtWorks)

Talk, 45 minutes (Intermediate)

Using mock objects can improve the modularity and focus of your unit tests, enabling you to test only the code you need to without worrying about dependencies. I'll talk about why this is good, and give some examples.


Functionally Testing GUI Applications

Testing GUI applications is difficult, but not only is it possible - it can be part of improving the development process

Michael Foord (Resolver Systems)

Talk, 45 minutes (Intermediate)

This talk will cover principles and techniques for the 'functional' testing of desktop GUI applications. This means driving the application from the outside (from the point of view of the user) and testing that the application actually works!

Unlike unit testing, which tests your code units in isolation, functional testing tests the wiring ogether of your components and that your features work as specified.

Part of functional testing is the writing of good "user stories", which means creating a good specification for your features, and then turning this specification into executable test code. In this way, as well as testing the application your user stories together act as documentation and specification.

Some people think GUI testing is so hard that it isn't worth the effort. This hasn't been my experience, and in this talk we'll look at the processes and techniques of functionally testing a desktop application.


Open Source Testing Tools In Practice

Software quality evolution from bad to great

Mark Fink (Tabane Limited, Schmiechen, Germany)

Panel, one hour (General)

When I joined the development team of a custom made enterprise logistic application in 2005 the application's quality was bad. At that point the roll out of a new software release kept the whole development team (8 developers) busy for over a week with resolving all defects found in production. To make things worse the users constantly reported bad response times of the application. On top of that the poor application performance also resulted in breakdowns of neighboring applications.

Over the project duration of three years the quality and performance issues have been continuously resolved and the application today could be used as a company showcase for robustness, high performance, and software quality.

Nowadays Bugs are found and resolved during the testing phases and only very few bugs make it into production. After a software roll out the whole development team is immediately able to focuses on the design of the upcoming software release.

Open source testing tools have been the key success factor for the improvement of the software quality. My panel will cover the phased approach to introduce the open source testing tools into the development process. Furthermore I will outline the prerequisites which had to be met for each initiative. Each quality initiative and the accompanying open source testing tool(s) will be discussed in depth. The factors which drove the selection of an open source tool will be covered in general.

I propose to have a panel where I discuss and take questions on solving the engineering problems in the quality of software such as:

* Prerequisites for each quality initiative/ project phase

* Goals of each project phase

* Testing tool requirements

* Success factors for each phase

* Risks and issues

Testing topics covered in the panel:

* Build Automation

* Unit Testing

* Continuous Integration

* Functional/ Acceptance Test Automation

* Performance-/ Load- Testing

Open source (testing) tools briefly covered in the panel:

* Fitnesse

* Python

* JMeter


py.test - Rapid Testing with Minimal Effort

Learning how to write tests and use extensions with py.test.

Holger Krekel (merlinux gmbh)

Talk, one hour (Beginner)

This talk introduces usage of py.test, a popular tool for writing and running automated tests. We walk through the implementation of tests, layered setup of test state and how to write project specific or global extensions. We discuss the current feature set including extensions for generating HTML pages, running tests for other languages such as Javascript or for distributing tests across machines.


User Interfaces

PyGTK, Glade and Kiwi - RIdiculously easy UI

PyGTK is rapidly growing as a GUI framework. Kiwi is a helper library that makes development with PyGTK quick, easy and (most importantly) painless.

Ali Afshar (Microlink PC (Medical))

Talk, one hour (Beginner)

I see so many new developers torturing themselves with GUI programming, and this talk would be a geniune attempt to make people's lives easier.

This talk will introduce PyGTK, and Kiwi, and then the various patterns of UI programming that are specifically solved with Kiwi.

These are:

#. Model/View/Controller and Proxy - Kiwi allows you to match UI elements with object attributes, and inform when these are changed in the UI, and keep data automatically synchronised and validated. We will go through creating a basic glade UI for an item.

#. List interface. Kiwi provides a list/tree widget which behaves as a Python list. We will go through creating an object list, adding/removing/selecting objects and why this will save you hours a day over using plain PyGTK.

#. Data search component. Kiwi contains a data agnostic data searching UI. We will go though making a UI that will search/list/filter a database using SQLALchemy


Epiphany Browser Extensions

An introduction to extending the Epiphany web browser using Python.

Tim Retout

Talk, 45 minutes (Intermediate)

Epiphany is the web browser for the GNOME desktop environment. One notable feature of this browser is the ability to extend its functionality through Python plugins.

This talk will introduce the extensions API, show off what is already possible with Python, and indicate future directions for development.


Enso Launcher - A Python Application for Everyone

A description of Enso Launcher, a different way of letting you do what you want to do

Stuart Langridge

Talk, 45 minutes (General)

Enso Launcher is a "linguistic command line" for your machine, based on the ideas of Aza Raskin and the Humanized UI development team. It was a commercial Windows product which was recently open-sourced, and because it's written in Python and built on cross-platform components like Cairo, it was easy to make it available on other platforms. In this talk, Stuart Langridge demonstrates how Enso works, explains why using it is better than wasting some of your precious time waiting for 25-year-old GUI techniques to catch up, and talks about how Python made this possible and some of the neat little tricks within the Enso codebase.


Resolver One: Python Inside and Outside the Spreadsheet Grid

An overview of Resolver One, a pythonic spreadsheet, including why it's useful and how we used IronPython to develop it.

Giles Thomas (Resolver Systems Ltd)

Talk, 30 minutes (General)

Resolver One is a spreadsheet that has been written in, and is scriptable in, IronPython. It differs from traditional spreadsheets by translating the formulae you enter into the grid (in a superset of Python syntax) into Python code, which is then executed to calculate the spreadsheet's results.

In this talk I will introduce the program and show how using Python code in your spreadsheet formulae and for the supporting "macro" code allows you to build better, more maintainable, and more elegant spreadsheet models, and how it helps non-programmers hand over their spreadsheets to developers or to other spreadsheet users.

I will also give a brief overview of the development process we used to build Resolver One, with particular reference to how we've used Extreme Programming as a way of handling our initial concerns about building a large-scale application in a dynamic language.


Introduction to GUI Programming with PyQt

Learn how it is possible to write cross-platform GUI applications that look good and work well.

Mark Summerfield (Qtrac Ltd.)

Talk, one hour (Intermediate)

The talk will introduce the PyQt4 application development framework which provides the nicest and most powerful yet easy to use library for cross-platform Python GUI programming available today.

First the scene will be set by explaining what PyQt4 is and then we will dive straight into a 20 line "hello world" GUI application.

The talk will next cover some general GUI programming concepts, starting with the event loop and widgets (controls in Windows-speak).

Then we will move on to two key aspects of PyQt programming. The first is one of the things that makes PyQt programming so much easier and more productive than other libraries. PyQt provides two event mechanisms, a high-level mechanism that greatly simplifies programming, and a low-level mechanism similar to the ones offered by other libraries.

The second key concept is that of widget layouts---and unlike Java's AWT, in PyQt they are easy to use and produce excellent results. Dialogs can be created in code or designed visually using the Qt Designer GUI design tool.

The rest of the talk will give an overview of what's on offer in the PyQt libraries, including the model/view architecture.


Practical Python GUI Programming with PyQt4

Learn how to write modern GUI applications with Python and the PyQt4 libraries.

Mark Summerfield (Qtrac Ltd.)

Tutorial, Half Day (Intermediate)

This tutorial provides a practical hands-on introduction to the PyQt4 application development framework, the nicest and most powerful yet easy to use library for cross-platform Python GUI programming available today.

You will need a computer with Python 2.5 and PyQt4 preinstalled (I believe that these will be available to borrow). You will also need to be comfortable with basic object-oriented Python programming---no GUI experience necessary.

The first part of the tutorial is introductory, covering PyQt and key concepts in PyQt and GUI programming. (This will be much shorter and narrower than the coverage given in my PyQt talk tomorrow, to give as much time to practical work as possible.)

After the introduction the tutorial proper will begin. This will start with the presentation of a couple of small example applications with a review of the key points/issues that the examples brings into focus. Then it will be your turn! You'll be given a small application to write, structurally similar to one of the examples. Once most people are finished, we will review a solution so that you can see how that compares with what you did.

We will then repeat this process once or twice more, depending on how much time we have, with further examples being reviewed to introduce new concepts and techniques, and then you having the chance to try out what you've learned.


Web Programming

Google's AppEngine for Beginners

This talk introduces AppEngine, Google's free Python webhosting platform.

Michael Brunton-Spall (Guardian.co.uk)

Talk, 45 minutes (Intermediate)

Google's announcement of AppEngine, free Python based hosting, caused a huge stir in the Python world. Learn what it is, and how you may want to use it. We will cover the advantages of AppEngine and see what things are not included. We will look at the basic API, including the basics of the Users and Datastore API and writing your first application. Lastly, we will look at the built-in Django, how to get it running and write a basic application.


What's new in Django 1.0

Join one of the lead developers of Django in a guided tour of the new coolness that is Django 1.0

Jacob Kaplan-Moss (Whiskey Media)

Talk, 90 minutes (Intermediate)

If all goes according to plan, Django 1.0 will be released at or before PyCon UK, therefore I will talk about Django's history and then cover all the cool new features in 1.0.

A basic outline:

- History

- Pre-history

- At the Lawrence Journal-World

- "The CMS"

- Thinking about Open Source

- IPO

- 0.90

- Why "0.90"?

- 0.91 - 0.96

- What's new in 1.0?

- Features!


Security Study Of Web Servers With A Case Study

Using Python to assess web server security risks.

Maqsood Mahmud (King Saud University, Riyadh, Saudi Arabia)

Talk, 30 minutes (Advanced)

Vulnerabilities are the loopholes that arise due to poor programming. Web Applications are considered to be very vulnerable to attack as compared to desktop programs on sole computers. Keeping this thing in our minds we decided to find out the all possible vulnerabilities in Saudi Arabian organisations' web servers. To assess these vulnerabilities we selected number of open source tools and tested about 169 most popular web servers of government, Financial, Academic, organizations and commercial organizations. This problem seemed to us interesting because of two reasons, first security is a burning issue of the world and it can be minimized by finding out the vulnerabilities. Secondly it is in the interest of Saudi Arabian national goals. This problem was not addressed before for Saudi Arabian Organizations web servers so that is why it carries high importance.The purpose of using different tools is to avoid false positive and false negative. We will enlist all the vulnerabilities found out by the tools with respect to their organizations. The vulnerabilities will be shown anonymously and with the level of severity. These will followed by a graph showing the "organization vs. vulnerabilities" relationship. A graph on “recommended patches vs. vulnerable organization server” is also included for those organizations that are conscious about their Organization privacy and confidentiality.

Co-authors of this work are:

* Dr.Khaled S. Alghathbar

* Hanif Ullah

* Maqsood Mahmud


An Introduction to Django

This tutorial will take attendees from a blank screen to a fully-functional web application.

Jacob Kaplan-Moss (Whiskey Media)

Tutorial, Half Day (Beginner)

Django is a high-level web development framework designed for rapid development of database-backed web sites. This tutorial is designed to introduce developers to Django. It will take attendees from a blank screen to a fully-functional web application. We will cover:

* The philosophies and culture behind Django, designing data models, and using the automatic admin interface. Writing public-facing views.

* Developing templates that designers can use to make sites pretty.

* Using generic views to speed up many common development tasks.

* Using Django with other tools from the Python ecosystem (such as external template engines, image/PDF generation, etc.).

Along the way, I'll discuss some of the best practices that Django developers should follow (and try to point out some pitfalls).

I don't expect attendees to have any experience with Django, the tutorial will start from the very beginning.

Since this is a Python conference, I expect that attendees will have at least a passing familiarity with Python. Those without any Python experience should be able to follow along with much of the material, but not all.

In a similar vein, I expect that most attendees will have some experience doing web development (in Python or another language). I'll explain many of the common web development problems that Django is designed to solve, but I won't spend much time looking at alternatives or prior art.


Using And Customising The Django Admin Interface

Django's automated admin application received a major upgrade in Django 1.0 - learn how to use and customise it to your own requirements.

Simon Willison (Consultant)

Talk, one hour (Intermediate)

Django ships with a production-ready admin application designed to provide an instant web-based tool for editing data stored by your Django application. This tool was initially created for an online newspaper publishing system and is ideally suited to rolling custom content management systems.

In Django 1.0, the admin application received a major upgrade (previously known as the newforms-admin Django branch). New hooks were added that made it much easier to customise and extend the admin interface, including support for custom templates, finely grained permissions and much, much more.

This talk will provide a short introduction to the admin tool followed by an exploration of the advanced customisations enabled by the new release.


LAX - Logilab Appengine eXtension

LAX makes it easy to build a new highly scalable application on top of AppEngine.

Nicolas Chauvat (Logilab)

Talk, 30 minutes (Intermediate)

Since 2001, Logilab has been developing its own web/data framework and deploying client solutions with it. Following the announce of Google AppEngine, Logilab decided to port the web part of its framework to get it to run on the datastore and released it under the GPL license at lax.logilab.org for PyCon-Fr on May 17th, 2008.

Logilab's extension to AppEngine features a selection/view mechanism that is an interesting step forward compared to most web frameworks. Publishing information is clearly divided in two steps using a query language to select objects before applying a view to this selection. Views can generate anything from a fragment of HTML to a RSS channel or a PNG.

Combined to a component architecture and a web engine packed with features like form management, work flows, security, tags, facets, etc. Logilab's extension to Google AppEngine helps you take your engine to the next level and facilitates web development with Python.


XML Document Publishing with Django

Using Django with a native XML database to publish complex XML documents.

Zeth (University of Birmingham)

Andrew West

Talk, 30 minutes (Intermediate)

We will be talking about a new approach for publishing large complex XML documents and document collections. We are doing this in the context of academic electronic publication, particularly scholarly editions that contain many variant texts (e.g. transcriptions of ancient manuscripts). However, it can be used for publication of any data encoded in XML.

The way we are trying to achieve this is through a new layer of Python code between Django and the native XML database Oracle DB XML (formerly Berkeley/ Sleepycat DB XML). This provides Django with the functionality not only to create/update/query the native XML database, but more importantly provides Django with the ability to generate dynamic content according to the structure of the document contained in the native XML database, or even just a specific section of a document.

This system is brand new and still at an early stage of development, and will be first seen at PyConUK 2008. This talk is of interest to anyone who may want to use Django with non-relational data.


Web App Development with Pylons: What, Why and How

What Pylons is, why you might want to consider it and how to get cracking.

Graham Higgins (Bel EPA)

Talk, one hour (Intermediate)

We will first take an orienting look the architecture of this extremely flexible full-stack Python web development framework, viewing it in context as one of the first projects to offer extensive re-use and flexibility through exploiting the advantages of the WSGI standard.

We will then take a few moments to saunter through a short but expressive workflow for creating the now-obligatory skeleton web application project, after which we shall take an easy climb up through the levels of abstraction to take in the panoramic views afforded by the elevation gained. From that height we will survey the extensive and luxuriant landscape of options open to us for data modelling, processing and presentation.

Lastly, we will examine some of the architectural details of Pylons that reveal how the Pylons builders were (and still are) able to take blocks of code quarried from remote, completely separate projects and align them so closely and with such precision that a razor blade cannot be inserted between them. We will see how the exquisite engineering skills of the Pylons builders allows an entire Mercurial repository browser to be positioned exactly in place with nothing more than a scant dozen lines of code.

After the tour, all visitors will be able to take home a life-size, fully-functioning Pylons of their very own to explore further at leisure.


Pylons, WSGI and the Web

This BoF session is for anyone interested in web development with Python, Pylons, Paste and WSGI.

James Gardner (3aims)

Meeting, one hour (General)

Come discuss the wonderful world of componentised web development with Python, Pylons, Paste and WSGI. This is a session for all comers, it does not matter whether you are used to Zope, Django, Pylons, Paste, TurboGears or if you are just starting out. We'll have a sample Pylons application on display so we'll be able to demonstrate how things fit together in real time and see the effects of changes.

Want to know how to embed Pylons directly into Apache? Got a question about the intricacies of mid request re-dispatch within a middleware component? Thinking about stealing the interactive debugger for your own application? Just want to know what all the fuss is about? Whatever you would like to know there will be Pylons experts here to answer your questions with real code in a way that wouldn't be possible in a normal presentation.


JavaScript for Python programmers

How to think (and sometimes code) in Python, and produce JavaScript: a mixture of experience, problems and solutions.

Jonathan Fine (LTS Strategic, The Open University)

Talk, 45 minutes (Intermediate)

The speaker has 8 years experience of Python, and 18 months of JavaScript. He's writing a sophisticated web-interface for the MathTran web service (editing TeX in a web browser).

He finds writing reliable cross-browser JavaScript difficult and slow. At this year's EuroPython he organised an OpenSpace event on JavaScript. About 20 people attended, and this talk builds on that experience and contacts made at that time.

Topics to be covered include:

- differences between JavaScript, and some common pitfalls

- testing, and writing code that can is easier to test

- using xfrac to write JavaScript tests in Python

- using Metatest to simplify writing tests in Python

- comparison of some JavaScript libraries

The speaker is keen to develop with others useful methods for creating JavaScript for use on web pages.


Facebook Apps in Python

An introduction to developing Facebook apps in Python

Kevin Noonan (Calbane Ltd.)

Talk, one hour (General)

Integrating a web application with Facebook can be a useful tactic to augment the audience for your site. An alternative strategy is to develop an app targeted specifically at the Facebook audience, to build a brand or gain an audience for advertising, etc.

This talk offers an introduction to developing web-apps in Python for Facebook and will cover the following topics:

* a brief history of the Facebook platform

* the anatomy of a Facebook application

* FBML (Facebook markup language)

* FBJS (restricted Javascript for Facebook)

* selected Facebook API calls (with examples in Python)

* options for hosting & scaling

* Facebook demographics & successful apps


Google App Engine Codelab

Spend some time coding a Google App Engine Application.

Mano Marks (Google)

Tutorial, Half Day (Intermediate)

Google App Engine lets you run your web applications on Google's infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. With App Engine, there are no servers to maintain: You just upload your application, and it's ready to serve your users.

This tutorial will walk you through creating a basic application with Google App Engine. If you've already built an App Engine application, feel free to come and ask questions. This will be a largely self-driven tutorial session, with some help and guidance from me.


Python was used to build this site Valid XHTML 1.0 Transitional Valid CSS!