For more information about PyCon 2006, see the main conference site at http://us.pycon.org/.
#1. Introduction to Pyparsing: An Object-oriented Easy-to-Use Toolkit for Building Recursive Descent Parsers
pyparsing is a pure-Python module, containing a class library for easily creating recursive-descent parsers. pyparsing's syntax provides tools for both simple tokenization and data structuring and interpretation. I will give an overview of the basic features of pyparsing, and a *very quick* overview of the advanced features. I will close with 3 or 4 application examples, time-permitting. (For more detail on the type of information I have to present on pyparsing, you can visit my SourceForge project web page at http://pyparsing.sourceforge.net.)(I have posted the presentation materials at my personal web page: http://www.geocities.com/ptmcg/python/index.html.)
#2. Agile Documentation: using tests as documentation
Grig Gheorghiu
Agile Documentation means having unit tests serve a double role: testing your code and documenting it at the same time. I borrowed the term "Agile Documentation" from an article called "Double Duty" written by Brian Button.
In the talk, I will show how doctest and epydoc make it very easy to automatically generate documentation in the form of Test Lists and Test Maps. To see how it all integrates together, check out http://agile.unisonis.com/epydoc/blogmgmt/
I will also show how the Django project generates API reference Web pages automatically from doctest-based unit tests.
I will finish my talk by mentioning the Wiki functionality of FitNesse as a mechanism for using acceptance tests as documentation.
The talk is based on the following blog entries I posted:
http://agiletesting.blogspot.com/2005/02/agile-documentation-with-doctest-and.html
http://agiletesting.blogspot.com/2005/08/agile-documentation-in-django-project.html
http://agiletesting.blogspot.com/2004/11/writing-fitnesse-tests-in-python.html
#4. An Interactive Adventure Game Engine Built Using Pyparsing
A pure-Python command interpreter engine for creating text adventure games. Used as an example of creating a custom "little language", in this case, the domain being a simple text-based adventure game. Provides a complete example of using pyparsing to structure input commands, with an internal Command structure to implement command behavior. (I have posted the presentation materials at my personal web page: http://www.geocities.com/ptmcg/python/index.html.)
#5. Desktop Application Programming With PyGTK and Glade
Michael Urban / Lion Research Center
GTK is the standard toolkit used in the Gnome desktop environment. Python, combined with PyGTK and the Glade visual designer is rapidly becoming the Visual Basic of the Gnome world for quickly and easily building fully featured GUI applications. However, applications written in Python and PyGTK are not restricted to Gnome or Linux. In fact, Python and PyGTK can fill the same roles as Java and Swing when it comes to writing cross-platform desktop applications.
In this tutorial presentation, I will show how to use the Glade visual designer plus the PyGTK module to quickly and easily build GTK applications using Python. Since GTK was originally written for programming the GIMP image manipulation program, we get a lot of very powerful image manipulation capability for free in GTK. As such, the tutorial will be focused around a simple image processing program that will give us the ability to preview images in a file window, load images for viewing, and rescale images. I will close the tutorial by giving a demonstration of a significantly complex real world Python PyGTK application that exercises many of the features of PyGTK including image editing, tables with custom table cell renderers, resizable dividers, and complex data entry forms.
#6. Vertebral Fracture Analysis
Wesley J. Chun / CyberWeb Consulting
Vertebral Fracture Analysis
Several years ago, at PyCon 2003, I presented a general paper on how Synarc, a medical imaging company in San Francisco, developed medical applications using Python. This time, I would like to focus on one specific project which was my primary responsibility as a Senior Software Engineer there.
The VFract application is used as part of a set of radiology services offered by Synarc. In addition to data entry and image digitization, Synarc provides reading services using software such as VFract to obtain critical patient data necessary for pharmaceutical companies participating in clinical trials to determine the effectiveness of developing medicines. The use of such software helps automate and expedite patient assessment during the course of these clinical trials, overall accelerating the time it takes to get new medicines and treatments to market. The use of VFract has consistently resulted in a large portion of the company's annual revenue.
In this talk, we will discuss all four of the VFract applications, the open source components used to build them (specifically the use of Python as the primary development language), as well as what the general system hardware architecture is made up of.
#8. Scripting .NET with IronPython
Martin Maly / Microsoft
IronPython is a fast implementation of the Python programming language on the .NET Framework. While it stays true to the beauty and simplicity of Python language, IronPython offers Python programmers seamless access to the riches of .NET libraries and applications in a fully dynamic environment.
This talk will focus on practical side of utilizing the power of IronPython beyond the interactive console development and exploration. It will demonstrate how to use IronPython to add rich scripting support to existing .NET applications. This will allow us not only to explore and animate the application but also extend its functionality with custom Python code. We will also demonstrate how IronPython can be used to bring together and orchestrate a wide variety of .NET components and services.
This talk is targeted at both Python programmers looking to take advantage the .NET Framework and at .NET programmers looking to learn how Python can make their jobs easier.
#11. Effective AJAX with TurboGears
Kevin Dangoor / Blazing Things LLC
Modern web browsers, combined with programming frameworks like TurboGears, allow for a rich interaction model that was not possible previously. This interaction model, which is commonly being referred to as AJAX regardless of whether XML is involved or not, brings new usability challenges. Just as people have gotten used to browser user interface elements that have become de facto standards, AJAX rises up to challenge user expectations.
This talk, and the accompanying paper, will briefly discuss some of the pitfalls and include demonstrations and code that illustrate ways to do AJAX so that users are pleasantly surprised, rather than frustrated.
Each discussion will include an example implementation done with Python and TurboGears with highlights of how the technique is actually implemented.
Though TurboGears will be used as the demonstration framework, previous experience with TurboGears will not be required to understand the talk or the examples.
The paper and a screencast version of the talk are online.
#12. Stackless Python in EVE Online
Kristján Valur Jónsson / CCP games inc.
The massively multiplayer online role-playing game Eve Online, developed by CCP games in Reykjavík, Iceland, makes heavy use of Stackless Python to implement game features. This presentation shows how Stackless Python has been used throughout the code to create a seamless environment of cooperative multitasking in the game engine and how Python code and C code interacts in a complex real-world environment.
#13. Cuaima MetaInstaller. New tool for managing System Installations.
Ricardo Strusberg / Latinux
Jesus Rivero / Latinux
Carlos Zager / Latinux
The intended use of this timeslot is to introduce "Cuaima" a new Web-Oriented (LGPL) software program we are writing to simplify the installation of custom GNU/Linux Distributions.
Cuaima is a MetaInstaller for GNU/Linux and *BSD Operating Systems that runs on top of a (Python) WebServer to provide local, remote and massive installations of these *NIX flavoured Systems. The installer is capable of installing any kind of Distribution and configuring it properly with preconfigured files or custom parameters such as the Distribution to be installed, user parameters, root's password, network configuration, etc. Cuaima takes the whole process of installation to another level.
Cuaima is written almost entirely in Python. The rest of the code is Javascript for client-side tasks such as field validator's and an implementation of XMLRPC to provide real-time installation-progress information.
Cuaima is part of a larger sets of tools that is in the planning stage now to provide End-Users and Enterprises the ability to create Custom GNU/Linux Distributions for determined and particular uses.
It is proposed that the Cuaima MetaInstaller be the Official Installer for the Official Venezuelan Republic GNU/Linux Distribution.
Official HomeSite: http://cuaima.latinux.org
#14. Osh: An Open-Source Python-Based Object-Oriented Shell
Jack Orenstein / Geophile, Inc.
Osh implements a language that supports the composition of commands through the piping of objects. This language is designed for use from the command-line of an ordinary shell. The objects piped from one command to the next can be Python primitives (numbers, lists, maps, etc.); other types such as dates/times, or database rows; or can represent various OS resources such as files and processes. Conversions between objects and strings simplify integration with the Unix environment. The commands included with osh manipulate objects, access databases, and execute commands remotely, including parallel execution on nodes in a cluster. Data manipulation commands allow the user to invoke functions, including lambda expressions, written on the command line.
Osh is licensed under the GPL. More information and a tarball can be obtained at http://geophile.com/osh.
#16. Decimal for beginners
Facundo Batista
The idea is to let the reader to feel confident about this new data type in order to start using it, from the very beggining, explaining a lot of background concepts the user needs to start to understand floating point and decimal.
The presentation outline is:
- Why you might care?
- Technical background
- Let's use it!
- Some advanced use
#17. Large-scale, cross-platform synchronization using embedded python
Alexis Lê-Quôc / Wireless Generation
Wireless Generation uses python to allow the synchronization of student assessments, from 70k teachers assessing over 1.5 million students. Because python is a high-level language it is fit to solve problems both as an embedded cross-platform client and as a server-side component. This talk will present a few opportunities where python shone on the client-side:
- cross-platform support
- ease of integration with c++ libraries
- focus on higher-level logic with higher-level code
- savings in development time
Slides available here
#18. Internet Access via Anti-Virus Policy Enforcement Software and Messaging Service
Jason Hoerr / Albright College, Frank Wilder / P-Wave, Inc.
The presentation will cover the use of Python/wxPython/Perl/MySQL to create a set of tools to control access to the Internet for over 900 personal computers on a college campus. Access to the Internet is based on valid registration of the computer on the college network and the confirmation of a valid antivirus definition file. The tools set consist of a program that runs on each client machine as a service, another program that is used to display messages on the client machine and a set of code that manages the actual connection to the Internet via virtual network switching on Cicso switches based on setting in a MySQL database.
#19. State-of-the-art Python IDEs
Jonathan Ellis / Berkeley Data Systems
This talk will build on the review of 6 IDEs done by the Utah Python UG and summarized here: http://spyced.blogspot.com/2005/09/review-of-6-python-ides.html. In the interest of time, this talk would focus on the most promising four IDEs: Komodo, PyDev, and Wing, which are in the review-of-6, and SPE, which is not.
#21. Developing an Internationalized Application in Python: Chandler a case study
Brian Kirsch / Open Source Application Foundation
Internationalization is the most often overlooked aspect of Application development. It is a mistaken belief that Internationalization can easily be added at anytime. This mistake ultimately results in developers frantically scrambling to patch together a solution for an architecture which was never designed for it. Too many products end up in a rewrite when the team finally discovers just how fundamental a role Internationalization plays.
This talk will cover general concepts on how to design Internationalized Applications, as well as focus in depth on the specific choices made for Chandler including leveraging Open Source libraries and designing for multiple Operating Systems.
#23. Cancelled: Processing XML with ElementTree
Andrew Kuchling / PSF
ElementTree provides a simple library for processing XML that feels natural to Python programmers. This talk is a 45-minute tutorial showing how to perform basic tasks with ElementTree.
#24. What is Nabu?
Martin Blais / Furius
Desktop search tools (e.g. Google Desktop) build a database of the information that is stored on your computer. Wouldn't it be great if some of this desktop database could be used to automatically feed your online blog, or a website?
Also, wouldn't it be immensely useful if the "types" of information found in your documents could be automatically identified? (i.e. a mini "semantic web", but for your own files) For example, by finding all the "addresses" in all of your personal files, you could easily build your address book.
Are you someone who uses plain text files instead of fancy specialized programs to maintain your personal data?
If you find any of the above interesting, this talk is for you. I am proposing a system, Nabu, built in Python using ReStructuredText, Docutils and text files, that can be used to collect "typed" data from those files and fill a remote database with the extracted data. This data can then be used to feed a wiki, a blog, a web site, or any other kind of presentation layer you desire.
Related talks: "Docutils Developers Tutorial: Architecture, Extending, and Embedding" is for those interested in the implementation details of Docutils. "Easy Slide Shows With reStructuredText & S5" describes another application of Docutils.
There will also be a Docutils sprint following the conference.
#25. TurboGears Tutorial
Mark Ramm
I will provide a tutorial for those interested in learning the basics of the TurboGears web programming megaframework.
#26. Packaging Programs with py2exe
Jimmy Retzlaff / Aver Development Corporation
py2exe is a Python distutils extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation. This talk by the maintainer of py2exe will cover the simple use, options, more complex use, and future of py2exe.
#28. Cancelled: SAGE: Software For Algebra and Geometry Experimentation
William Stein / Dept. of Math., Univ of California, San Diego
#29. Cancelled: Python in Business : Thyme, a business-oriented Python development framework.
John Pinner / Clockwork Software Systems
At PyCon 2005, I presented PayThyme, Clockwork's industrial-strength UK statutory payroll. There was some surprise that we had licensed such a commercial application under the GPL. Since then PayThyme has been used by over 1000 companies and at London's LinuxWorld expo was the outright winner of Best Open Source Application.
PayThyme's development platform is Thyme, our own Python development framework based on Python, C and PyQt. It allows us to develop business applications very quickly indeed.
This presentation describes Thyme, the rationale behind its design, demonstrates it in use, and shows how we are updating and extending it.
#30. Cancelled: Python at Home : In Control
John Pinner / Clockwork Software Systems
Once upon a time, a long time ago, I installed central heating in our home, a wet system with gas-fired boiler and a (then) state-of-the-art control system. Recently I replaced the boiler, but was disappointed to find that there was no modern equivalent to the old control system.
It didn't take long to realise that it shouldn't be impossible to create a new and improved controller using PC technology. After all, all we needed was a few relays to switch things on and off, some temperature sensors to measure what was going on, a spare PC, and some software to glue it all together.
So was born a Python-based project to control our heating system, the objective being to maximise comfort and minimise running costs. It has been both fun and satisfying putting it into practice.
The presentation will describe the control system and its development.
#31. Extending the life of CVS with Python
Anthon van der Neut / Pinnacle SYstems
This talk describes how Python is used to overcome problems, and automate several administrative tasks in a multi-location, multi-project CVS and CVSup-mirroring setup, as well as a flexible build system for sources contained in these repositories.
#34. The State of Dabo
Ed Leafe / The Dabo Project
Dabo is a 3-tier desktop application framework written in Python. Its database tier allows it to be used with just about any relational database backend, such as PostgreSQL, MySQL, SQLite and others. Its UI tier wraps the popular wxPython toolkit, and provides a much more consistent and Pythonic API for developing GUI applications. It also makes binding UI controls to data as simple as setting two properties of the control. Its business object middle tier provides flexibility and power in ensuring that the application data is validated against your business rules, and that business processes are kept independent of your choice of UI or database.
Since Dabo was first shown at PyCon DC 2005, it has continued to be developed, and has matured significantly. The session will begin with an overview of the framework, discussing the target audience for Dabo and how the framework can help make application development much easier and much more maintainable. It will then cover several of the new developments in Dabo, such as the design tools, such as the Form Designer and the Report Designer.
There will also be a section on using the dabo.ui module independently of the rest of the framework. Over the past year, several wxPython developers have started to use Dabo's UI tier to develop their applications, even though they are not working with databases. This surprised us at first, but these developers have inspired us to focus on making the dabo.ui module more complete, by adding support for several non-data related controls as well as creating a drawing object framework that gives much better control of the direct drawing on the UI surface than the raw wxPython API does. So I will include a section in the talk contrasting raw wxPython with dabo.ui, showing how much simpler creating a UI app in Dabo is.
#35. PyPy architecture session
Holger Krekel / merlinux GmbH
Co-talker: Armin Rigo
After reaching important milestones, the PyPy project is now (starting autumn 2005) heading towards building a specializing JIT-compiler, stackless features and translation to higher level languages into the code base. In this session we will present and interactively discuss with the audience the basic architectural pictures. We are going to emphasize the various emerging possibilities for further development part of which will be an ongoing effort of the European Union's funded part of the PyPy project.
In particular, we'll describe the following architectural pictures and point out extension and optimization possibilities:
- Language Implementation: Bytecode Interpreter and Object Space interaction
- Translation to low level languages (C/LLVM)
- Translation to higher level languages (e.g. Squeak/Java)
- JIT-compiler architecture (very-low-level/l3 interpreter)
- Interweaving of Garbage Collection, threading and stackless operations into the translation process
#36. Python Can Survive In The Enterprise
David Stanek & Mike Pirnat / AG Interactive
A commonly observed myth about the Python programming language is that "it doesn't scale," particularly in the context of web applications. Thankfully, this is far from the truth; Python in fact provides the possibility to scale to significant enterprise levels. As evidence in Python's favor, we will discuss the scaling challenges and successes of AG Interactive.
AG Interactive develops and operates a family of large, high-traffic websites using Python. Our websites are focused primarily on the electronic greeting card and social self-expression industries, where it's essential to be available when our customers need to connect with one another. The most widely-recognizable brands in our network are AmericanGreetings.com, BlueMountain.com, and Egreetings.com; in addition, we provide the online greetings capabilities for such industry leaders as AOL, MSN, and Yahoo, as well as supporting numerous other partner integrations. Our websites deliver a monthly average of approximately 30 million page views, but we also encounter profound seasonal and holiday traffic spikes that can demand over 90 million page views within a 48-hour period. A typical day in our off-season is roughly equivalent to a sustained Slashdotting. Additionally, the needs of our business are constantly growing; to fulfill them, we implement and deploy hundreds of projects each year. Python allows us to accomplish this without exploding our staffing needs.
We will discuss the infrastructure that we've put in place to respond to these challenges, how we have architected to scale to many sites as well as high volumes of traffic, and how Python allows it all to happen. We hope by our example to provide an inspiration for others to achieve success with Python in high-capacity, scalable solutions.
#37. Beyond Scripting: Using Python to create a medical information system with graphical template and database schema design
Matthew Harriger / University of Nebraska Medical Center
Python is often described as a "scripting language". While python is an excellent choice for simple scripting tasks, it is also ideal for developing complex applications. The Department of Surgery at the University of Nebraska Medical Center is creating a medical information system called intuaCare using Python, wxPython and other open-source tools and libraries.
intuaCare and intuaDesign are wxPython-based applications that provide point-of-care access to patient records. intuaDesign is a graphical template/interface designer that gives users the ability to create their own data entry screens via drag-and-drop and also generates the appropriate database tables for the storage of data. The forms generated by intuaDesign are then used by intuaCare to collect and display clincal data. The data collected is stored in a local database on the device, and synchronized to a master Oracle database when a network connection is available.
This presentation will cover our reasons for selecting Python and wxPython as the platform for intuaCare, and some of the features we were able to implement using Python that would have been more difficult in other languages. A brief demonstration of intuaCare and intuaDesign will be included in the presentation.
#38. PyPy -- where we are now
Michael Hudson / Heinrich-Heine-Universität Düsseldorf
Christian Tismer
PyPy, the notorious Python-in-Python project reached a significant milestone in the summer of 2005: being able to produce a standalone python interpreter with no dependencies on any of CPython's C code.
This talk will describe as much of the toolchain that got us to this point as it's possible to cram into 30 minutes :).
#39. The Rest Of The Web Stack
Ian Bicking / Imaginary Landscape
This presentation describes the complete technology stack and methodology that has been developed at Imaginary Landscape, for the development and deployment of applications and web sites in a heterogeneous environment.
Much attention is payed to the programming portion of web application development. But successful web application development requires a lot of infrastructure and methodology beyond programming itself. This talk covers these parts of the process:
- Deploying applications.
- Keeping deployments and dependencies isolated.
- Identifying and managing the configuration of the applications.
- Handling application customizations.
- Source control.
- Customization.
- Cross-application navigation.
- Authentication across application and language boundaries.
- Integrating applications written in other languages for other environments.
- Handling static files associated with applications.
Some new tools will be presented, but the emphasis is on how to bring together a diversity of existing open source tools for a complete development process. While many of these tools will be familiar, often they are presented in terms of what you *can* do, not what you *should* do, and this talk presents a series of shoulds.
The motivation behind this toolset is the quick production and maintenance of small, decoupled applications, as well as their deployment in multiple contexts.
Some of the tools covered:
- Subversion
- Apache
- Server-side includes
- mod_auth_tkt
- SCGI
- easy_install
- Paste Deploy
- Paste Script
- buildutils
#40. SAM: Transforming a commandline tool to Web 3000 (c)
Matt Harrison / SpikeSource
This presentation discusses Spike Asset Manager (SAM http://developer.spikesource.com/wiki/index.php/Projects:sam ), the reasons python was chosen as implementation language as well the benefits python has provided.
SAM is a tool that detects open source components on a system (windows, linux, mac). By the time PyCon rolls around SAM will have transformed from a relatively simple cross platform command line application to a network aware server capable of detecting other instances. IT users will be able to control all instances from either the command line or a gui (fancy AJAX provided in a web broswer because some systems may be headless).
This talk will discuss the evolution of SAM, the design decisions made and a few of the open source projects it uses (PDIS Xpath, ElementTree, Path, Cheetah, json-py, MochiKit, WebStack, pyzeroconf, py2exe and more). The intended audience is python users who are interested in AJAX, Web2.0 or converting a commandline app into a web enabled app.
#41. Teaching Python - Anecdotes from the Field
Vern Ceder / Canterbury School
Since 2001, Canterbury School in Ft Wayne, IN has been teaching a brief unit of Python as part of a required 9th grade Intro to Computer course. In 2004 we also added a 4 day unit of Python programming to our required 8th grade computer course. In addition, I will be presenting a tutorial on Python programming to K-12 teachers at the 2006 Indiana Computer Educators (ICE) conference, the 5th largest conference in the US aimed at K-12 technology teachers.
This presentation will deal with the issues encountered in using Python to introduce programming to non-programmers. I will assess how effective in my experience Python has been in that role, and will include samples of student code and reactions to Python from students and from the teachers attending the ICE tutorial.
#45. Implementation of the Python Bytecode Compiler
Jeremy Hylton / Google
This talk describes the internals of the Python bytecode compiler. It describes the new bytecode compiler that will be released with Python 2.5.
The Python virtual machine and bytecode compiler use well-known techniques for interpreters. The aim of this talk is to document the specific use of those techniques in C Python. It is intended for developers interested in modifying or extending the language or its implementation -- or anyone curious about language internals.
The talk covers the architecture of the compiler from parsing to bytecode generation. The high-level outline of topics covered is:
- Lexical analysis and parsing
- Abstract syntax
- Semantic analysis
- Code generation
- Execution
#46. Making Apples from Applesauce: The Evolution of cvs2svn
Brian W. Fitzpatrick / Google, Inc.
While the goal of the Subversion project is to "provide a compelling alternative to CVS", the goal of the cvs2svn project is to enable CVS switchers to take all of their history with them to Subversion. cvs2svn started life as a short Python script that converted no CVS tags and branches, but it survived several rewrites and quickly grew to a 5000 line powerhouse. Today, cvs2svn not only converts CVS tags and branches, but it gracefully handles dozens of RCS edge cases and has been used to convert thousands of CVS repositories. This talk reviews the evolution, design, and implementation of cvs2svn and how we managed to discover things about CVS repositories that most people didn't think were possible.
(This has grown out of a talk I gave to ChiPy in April 2005 and a Python lightning talk I gave at OSCON EU 2005).
#47. agile open-source methods, businesses and EU-funding
Beatrice Düring, /Change Maker,
Holger Krekel / Merlinux
There is a growing number of open-source developers organized and connected to company and money related work. We report our experiences from the first year of the PyPy
