Python Sessions

Wednesday | Thursday | Friday

Wednesday, July 25

Will the Next Generation Internet Still Depend on Open Source?
Fred†Baker, Cisco Systems
Track: Keynote
Date: Wednesday, July 25
Time:†9:00am - 9:30am
Location:†Grande Ballrooms ABC in the East Tower

Sponsored by
IBM
How important is open source to the future of the Internet? The Internet evolved as it did because of open source software and open standards. The spirit of open source is best expressed by the Internet Engineering Task Force, which operates on the basis of "rough consensus and running code." However, today's Internet is not the playground it was a decade ago. While some applications, like Napster and AIM, use the open Internet effectively, the sacrifice of the end-to-end model makes deployment of innovative applications challenging. The introduction of so-called "middle boxes" - firewalls, translators, caches, and application layer gateways - means that the new applications must actively circumvent these, or must gain their cooperation.

In a highly competitive market, with a lot at stake, developing consensus as well as running code can be difficult. Industry consortia and business models may determine how the future of the Internet gets decided - and who makes those decisions. Cisco Fellow Fred Baker will talk about the challenges that will shape the Internet, and whether Open Source will play as big a role as it has in the past.


An Open Source Success Story on Wall Street
W. Phillip†Moore, Open Source Advocate
Track: Keynote
Date: Wednesday, July 25
Time:†9:45am - 10:15am
Location:†Grande Ballrooms ABC in the East Tower

Sponsored by
IBM
Morgan Stanley has what is widely recognized as one of the best IT departments in the financial industry, and has built one of the worlds largest integrated and truly "Enterprise-wide" technology platforms for application deployment.

This infrastructure was architected with a combination of Open Source and proprietary software. This presentation will discuss the challenges faced, both technical and political, when deploying OSS on such a large scale and the problems managed as the environment changes and grows.

The discussion covers the contrast between the OSS experience with that of proprietary closed source products in the same environment, the lessons learned from this experience, and how the OSS community can help make OSS a continued success.


Python Keynote
Guido†van Rossum, Creator of Python
Track: Python
Date: Wednesday, July 25
Time:†10:45am - 12:15pm
Location:†Bel Aire North in the West Tower

Guido van Rossum, the creator of Python, will speak about all things Pythonic: Python's success in education, the coolest new Python application, why the next release won't make your brain explode, and the Spanish Inquisition. Java, Perl and Tcl programmers welcome!


Python for Massively Multiplayer Virtual Worlds
Jason†Asbahr, ASBAHR.COM
Track: Python
Date: Wednesday, July 25
Time:†1:45pm - 2:15pm
Location:†Bel Aire North in the West Tower

A technical overview of the Python foundation of UO2, the next- generation massively multiplayer virtual world from Origin Systems, Inc. UO2 presents an imaginary planet inhabited by all manner of fantastic, mythical, and technological creatures, places, and things for users to explore. Python makes it go.

The talk will address three key ideas in the philosophy of the UO2 architecture. The first is the structure of the logical simulation domain; the second, the split between the maintenance of simulation reality and the presentation of that reality to users; and finally, the means by which the simulation utilizes a relational database for behavior definition and object state storage.


Writing Python Plug-ins for Adobe After Effects and Photoshop
Grant J.†Munsey, Adobe Systems
Track: Python
Date: Wednesday, July 25
Time:†2:15pm - 2:45pm
Location:†Bel Aire North in the West Tower

Adobe After Effects and Photoshop both have extensive APIs for adding plug-in functionality. Plug-ins are generally written in C or C++. C and C++ are fine programming languages, but After Effects and Photoshop users are mostly graphic artists. They are not professional programmers and dealing with C development tools is too much to ask of them. Because of this users rely on third party developers to extend Adobe products. Unfortunately, due to business considerations, developers can only provide plug-ins that have broad appeal. To fill the gap between third party developed plug-ins and specific user needs a much simpler way to produce specialized plug-ins is needed.

I have written a set of plug-ins for both Adobe After Effects and Photoshop that provide a Python interface to the API. With this system users can write useful plug-ins with a minimum of tools and programming experience.

Because the API includes a complex set of routines and structures, I wrote a code generation tool in Python that can handle many kinds of parameter passing methods and structure formats.

Plug-ins for graphics applications often do a lot of computation. In order to make image manipulation practical from Python I have included modules for access to OpenGL and LibArt. Of course users can use PIL and other modules as well.

The plug-ins as well as several auxiliary modules are available on the Adobe Open Source site.


The Artist as Python Programmer
Gever†Tulley, Helium, LLC
Track: Python
Date: Wednesday, July 25
Time:†2:45pm - 3:15pm
Location:†Bel Aire North in the West Tower

Using Python to explore the notion of 'found' or 'revealed' art, Gever Tulley has developed a new breed of illustration. Using simple python classes in a framework that encourages experimentation, he works both in and on his medium almost simultaneously.

This session looks at the results of these experiments, and the methods used to achieve them. Python topics covered include examination of user interface options, genetic algorithms, and the pleasure of programming in Python for arts sake.


Designing a Masked Array Facility for Python
Paul†Dubois, Lawrence Livermore Laboratory
Track: Python
Date: Wednesday, July 25
Time:†3:45pm - 4:15pm
Location:†Bel Aire North in the West Tower

MA operates nearly transparently as a drop-in replacement for Numerical, offering nearly all the same functions. In addition, more methods and functions are available to deal with the complexities of masked arrays. This talk discusses the design choices and features of the MA extension.

Numerical Python has proven to be a powerful and successful array-language extension to Python. Its use permits compact and efficient manipulations of large amounts of data. The Numerical Python package defines a large number of functions on arrays, such as trigonometric functions, logs and exponentials, inner and outer products, logical functions, and specialized array manipulation functions.

Unfortunately, many real-life applications contain data that, while basically consisting of full arrays, contain elements whose value is unknown. Most commonly, this arises from observational data, such as a particular weather station that was out of operation for a time, or an area of the Earth or experimental domain that needs to be excluded from a calculation, or by times when no observations are taken in an otherwise uniform sequence, such as daily financial data not recorded on weekends or holidays, missing pixels in a picture, etc. Additionally, many numerical algorithms can be more easily implemented using arrays with "missing" data.

The masked array facility, MA, was designed to meet this need. A masked array is conceptually an array with missing values. MA represents such an array as a data array and a mask array. The mask array, if present, is an array of 1's and 0's, of the same shape as the data array, where a 1 represents a location with invalid data. When operations are performed, the resulting quantity has an appropriate mask. For example, if we add two masked arrays, the result has a mask consisting of the logical or of the operands' masks. All operations avoid using the data from invalid locations.

For technical reasons it is not possible to inherit from the Numeric array object. While it would be possible to write a separate extension in C, it was felt important that MA arrays be convertible to and from Numeric arrays, and that a maintenance burden not be introduced by writing a compiled extension. Therefore, MA is implemented entirely in Python. As such, MA is a great case study of Python's power and flexibility. As a class, the MaskedArray class illustrates usage of nearly every feature you can have in a Python class, and classes such as masked_binary_operator illustrate the design of function-like class instances.


Steering Massively Parallel Simulations Under Python
Patrick J.†Miller, Lawrence Livermore National Laboratory
Track: Python
Date: Wednesday, July 25
Time:†4:15pm - 4:45pm
Location:†Bel Aire North in the West Tower

We examine how the addition of an explicit MPI messaging layer to the Python language allows developers to craft flexible and powerful interfaces to high performance, massively parallel (1000+ processors) simulation codes. In designing these code, a great deal of care is given to the performance and capability of the underlying physics or mathematics of the simulation. Just as important, however, is the framework that ties the various parts of the simulation together. A framework must be both flexible and extensible. Flexible to allow components of the simulation to work together in (perhaps) unanticipated ways. Extensible to allow new components and algorithms to be quickly prototyped or added to the simulation. We use the power of the scripting language Python to form the core of our framework. Python is more complete than a handcrafted simulation control language would otherwise be. Python becomes the glue that combines otherwise unrelated components for computation, graphics, and analysis of data. We present how using pyMPI, an Open Source extension to Python, we can control and co-ordinate SPMD and MIMD simulations up to thousands of processors. We will also present PYFFLE, an Open Source extension generator, which we use to integrate C++ and FORTRAN simulation components into Python. We will also discuss initial findings from our use of PyCOT, a Python to C++ translator which we will use to accelerate user extensions written in Python.


Spheral++, An Open Source Tool for Simulating Hydrodynamical Processes in Astrophysical Problems
J. Michael†Owen, Lawrence Livermore National Laboratory
Track: Python
Date: Wednesday, July 25
Time:†4:45pm - 5:15pm
Location:†Bel Aire North in the West Tower

Many problems in modern astrophysics (such as the formation of stars, planets, and moons, supernova explosions, stellar collisions, gaseous disk accretion around stars or collapsed objects, galaxy formation and the formation of large scale structure in the universe, etc) require the numerical modeling of gas dynamics in order to gain a theoretical understanding of the phenomena or to make detailed comparisons of theory with observations. In general most research groups write their own numerical tools specialized to model the phenomena they are interested in, and there is little sharing or reuse of such code in the community as a whole. This is in part because such code is generally written in such a specialized manner that reuse or generalization is difficult, and also because the culture tends to encourage each researcher to do everything themselves. While there will always be a place for custom crafted research software, many efforts could benefit from a widely available, sufficiently flexible open sourced tool that could be adapted to their needs.

This talk will describe the Spheral++ project, an effort at providing one such tool. Spheral++ implements several variants of a flexible and simple hydrodynamic algorithm (Smoothed Particle Hydrodynamics) under a steerable interface (Python). The code itself is implemented as a set of C++ objects wrapped and accessible from Python, providing an interactive and flexible tool for both modeling and the subsequent analysis. It is intended to be usable on modern massively parallel architectures, and thus able to model astrophysical systems at resolutions previously impractical. Spheral++ is open source and hosted at SourceForge, and itself benefits from other open source projects (Python, Pyffle, Gnuplot, VTK, etc).


Thursday, July 26

Shared Source vs. Open Source: Debate and Panel Discussion
Craig†Mundie, Microsoft, Michael†Tiemann, RedHat, Inc.
Track: Keynote
Date: Thursday, July 26
Time:†8:45am - 10:15am
Location:†Grande Ballrooms ABC in the East Tower

Sponsored by
Sun Microsystems
Microsoft Senior Vice President Craig Mundie and Red Hat CTO Michael Tiemann set the stage for a wide-open panel discussion about Microsoft's Shared Source program and the response from the open source community, when they square off in this shared source vs. open source debate.

Mundie set off a far-reaching discussion recently when he introduced Microsoft's Shared Source program, which blends access to source code with the preservation of strong intellectual property rights by software developers, and contrasted Shared Source to Open Source and the GNU General Public License.

There's been a strong response from the open source and free software communities, accusing Microsoft of trying to co-opt the momentum of open source with a program that offers superficial similarities, but few of the real benefits. Microsoft counters that they are trying to find a balance between the needs of commercial developers and the lessons learned from the open source movement.

Mundie will discuss ways in which Shared Source differs from Open Source, and why Microsoft believes that the Shared Source Philosophy supports a strong software business case for commercial software developers and their customers.

Red Hat CTO Michael Tiemann will then discuss the industry's experience with open source vs. pseudo-open licensing, and why he believes that the future will favor stronger (rather than weaker) licenses to protect choice for users and freedom for developers.

His speech will be followed by a panel discussion with Tiemann, Mundie, and other experts on intellectual property and the software industry including,

Tim O'Reilly will moderate the panel.


New Features in Python 2
David†Beazley, University of Chicago Dept of Computer Sci
Track: Python
Date: Thursday, July 26
Time:†10:45am - 12:15pm
Location:†Bel Aire North in the West Tower

This talk provides a detailed overview of new features in Python 2.x. Topics include additions and improvements to the core language, Unicode support, internationalization, XML, and additions to the standard Python library.


Programmer's Package Manager: Using SOAP to Fetch Pre-built Python Packages
Trent†Mick, ActiveState
Track: Python
Date: Thursday, July 26
Time:†1:45pm - 2:15pm
Location:†Bel Aire North in the West Tower

This talk describes ActiveState's solution to the eternal problem of easily installing precompiled modules for Python. Presented are the problem, the architecture chosen to solve it, and the final user interface. The particular technologies used include XML, SOAP, distutils, and Web Services.


Using Python to Customize, Extend, and Integrate Enterprise Project Management Software
Deborah†Davidson, Advanced Management Solutions, Inc.
Track: Python
Date: Thursday, July 26
Time:†2:15pm - 2:45pm
Location:†Bel Aire North in the West Tower

The presentation will describe how Python has been integrated with a commercial software suite, including APIs and database access functionality provided to developers.

It will also illustrate numerous examples of how developers and customers have extended a commercial application suite, including:

Advanced Management Solutions Inc. (AMS) provides a commercial suite of software for project and resource management called AMS REALTIME. AMS REALTIME is a multi-platform (Windows, Linux, Mac) distributed client-server application suite written in C++ and Python.

AMS chose to embed the Python programming language into its application suite in order to support the needs of organizations who want to customize their AMS REALTIME application software to exactly reflect their business rules and processes, as well as to integrate with other information systems, while maintaining the benefits of an off-the shelf application.

Python was an excellent choice for this because of its power, object-oriented design and support for multiple operating systems.


The Adventures of a Snake in the Land of Camels
David†Ascher, ActiveState
Track: Python
Date: Thursday, July 26
Time:†2:45pm - 3:15pm
Location:†Bel Aire North in the West Tower

A little more than a year ago, my employer, a company with a long commitment to the Perl way of life, decided to embrace Python as well. Since that time, appreciation for Python has grown throughout the company in a variety of ways. This growth has occurred as both technical and non-technical people throughout the organization interacted with Python, with Python tools such as Zope and Mailman, and with the Python community. I will present my perspective on the transformation, as an "old Python hand" who got to see Python make its way in what could have been hostile territory, using anecdotes, quotes and some metrics.


PyDebug: A New Application for Integrated Debugging of Python with C and Fortran Extensions
Peter†Stoltz, Tech-X Corporation
Track: Python
Date: Thursday, July 26
Time:†3:45pm - 4:15pm
Location:†Bel Aire North in the West Tower

A popular technique for debugging C and Fortran extensions to Python is to run Python under the gdb debugger. If the code crashes inside a compiled extension module, this event is caught by gdb. One can then use gdb in the usual way -- see the stack, examine local variable values, etc. However, one cannot set a break point, restart Python, and have that break point survive the restart. Setting a break point requires that one pause the code after importing the appropriate extension module, then send an interrupt to Python in order to enter gdb, and finally set the break point in the usual way.

We have developed a new Python application, called PyDebug, which introduces a middle-ware layer between gdb and the code being debugged. PyDebug enables the user to set break points seamlessly inside compiled C and Fortran extensions to Python and have these break points persist through code crashes and restarts. Our middle-ware approach, which requires careful use of both pipes and threading, enables the user to issue any gdb command from the Python prompt and have it passed through to the gdb application. One can also embed gdb commands as comments within a Python script. PyDebug could easily be extended to debuggers other than gdb.


Component-oriented Programming in Python
Brian†Kelley, Bioreason, Inc.
Track: Python
Date: Thursday, July 26
Time:†4:15pm - 4:45pm
Location:†Bel Aire North in the West Tower

Components are prefabricated building blocks that are assembled to create larger software systems that have been used and proven in a variety of engineering disciplines from electrical to mechanical engineering. Just as in these disciplines fundamental standards have to be applied to provide wiring services, standard services and application domain standards. We will show how Python provides an excellent environment for creating and using components and discuss techniques to facilitate programming and testing. We will also discuss existing component architectures and standards that already (or soon will) smoothly integrate with Python such as CORBA and Microsoft's COM and .NET architectures.

Outline


Component Programming in Python (COM, XPCOM, .NET)
Mark†Hammond, Enfold Systems
Track: Python
Date: Thursday, July 26
Time:†4:45pm - 5:15pm
Location:†Bel Aire North in the West Tower

Component programming is one of the key developments in practical software engineering in the last decade. Large companies successfully use component programming in building and deploying complex software systems. The open-source community, however, has mostly ignored it. In this talk, Mark Hammond gives his perspective on component programming, what it is, how it's done, and why Python programmers may benefit from learning more about it. He also describes his implementations of bridges between Python and three different component models: Microsoft's COM and .NET, and Mozilla's XPCOM.


Friday, July 27

Big Hairy Problems: Open Source Challenges in the Enterprise
Michael†Tiemann, RedHat, Inc.
Track: Keynote
Date: Friday, July 27
Time:†8:45am - 10:15am
Location:†Grande Ballrooms ABC in the East Tower

Sponsored by
ActiveState
If you talk to CTOs, their biggest concerns arenít whether to use commercial software or open source software but a set of large-scale problems that donít yet have obvious solutions. Oracle may not have solutions for them, but neither does Open Source. Our panel of top CTOs will tell us about enterprise-class problems that they are worried about solving into the future.