Monthly Archives: March 2008

A stroll through Kiva, Enable, and Chaco

In the past I’ve put off writing documentation for Chaco and Enable because every time I had faced the task, it seemed so daunting: there are over a hundred classes, a dozen different patterns and conventions, and so many areas for improvement and exploration. It frequently felt much easier just to work on code.

But I recognize that the situation is pretty dire, and something needs to be done about it. The reality of the situation is that the only way this documentation will materialize is if someone actually sits down and writes it, and this someone is basically going to have to be me, along with much-appreciated help from Janet. I’m going to take a slightly different approach, though. In the past, I’ve been stumped by the question of organization and structure; this time, I will just talk about all the pieces that comprise Enable and Chaco and essentially narrate a tour of the packages, without trying to outline a detailed structure beforehand.

Doing this as a series of blog posts makes the task seem somewhat less daunting, and it also allows for reader feedback as I’m writing things up.

So let’s get started!
Continue reading

PyCon 2008: Tutorials and Day 1

I’m having a great time at PyCon. Tutorial day was wonderful. It was so exciting to be in a room full of people who were interested in the more advanced features of NumPy. The array object in NumPy is a well-developed abstraction that can be used for manipulating data in addition to doing math. It is thrilling to see it being used effectively by so many people. Hopefully 1.0.5 can come out before the conference is over.

I had a good time explaining “structured arrays” (an array with a structure as the data-type), and showing a little bit about how it could be used. I’m grateful that John Hunter and Fernando Perez allowed me to use their stock_ripping example. The demo code used in the tutorial is available at this link if you want to see it in action.

Hopefully a few people got interested in improving NumPy during our talk by adding Documentation, or taking on one of the projects listed on this page. If you have additional project ideas please post to the list and let us know.

Eric gave an illuminating presentation of how to take legacy code and turn it into a modern application by letting Python be main and linking to the underlying core-competency that is actually legacy. He also showed wonderful chaco examples and explained TVTK in a way that finally helped me see what it is all about. These are very useful tools (if you can get them installed). Fortunately, EPD is a great way to try them out.

I spent a good part of the rest of the evening getting ready for my Python 3.0 Buffer Interface talk the next morning. I was pleased with attendance at the talk (which can be a dry subject). Having a standard way to share and describe memory will be a huge benefit to Python long term, I think. I’m very enthused that it might help everybody in the Python community better use each others in-memory objects to the benefit of us all. I’m still looking for help to implement a few of the features, however. So, if you want to make a difference in Python, now is your chance. Please send me mail.

After my talk, I attended several good talks as well as meeting a lot of great folks while I stood at the Enthought booth. The two multi-touch tables at the booth were fun to show off, but personally I was even more excited to put the result of our work in building an uber-distribution of Python into the hands of as many people as possible.

PointIR in action

The two talks I remember best today were the one on Python + .NET by Feihong Hsu. I thought it was neat to be able to say import clr from CPython and get access to .NET assemblies. I hope the .NET framework stays as cross-platform as it is touted. The other talk that piqued my interest was the one by Jeffrey Scudder on using the Google API to access Google Spreadsheets. It occurred to me that we ought to have a way to publish NumPy arrays to these Spreadsheets, to allow easy sharing of processing results using NumPy. I think such a thing is relatively easy to build using the tools he was advertising.

I almost had the pleasure of lunch with Perry Greenfield, but I had to run off to attend the PSF meeting (which was very well run and gratefully short). We did get a chance to brainstorm about ideas for improving NumPy (some of which came from earlier conversations with Eric). These can be found at the Project Ideas wiki.

In the evening I attended a productive Packaging BOF. I was thrilled to see so many there. There is a lot of interest in building on the work Philip as pioneered and move toward setuptools 1.0 that can become a part of the Python standard library. We are using eggs quite heavily at Enthought as well and would love to help out in moving the technology along more quickly. It was a lively discussion with good ideas being generated. There may be an additional Packaging BOF on Saturday. A wiki will be created to detail some of the issues that emerged from the discussion that we hope to fix in setuptools.

After the BOF, I met Van Lindberg in the hall and had the pleasure of a thought-provoking discussion with him on a milieu of interesting topics including Open Source Business model, intellectual property issues and the marketplace of crystalized ideas that is code, and even a little bit of political economy. It was kind of Van to share his time with me, especially the night before his Keynote address. We also took a bit of time comparing notes about our experiences at BYU. (e.g. we both met our wife there — something BYU is internationally recognized for 🙂 ).

I’m looking forward to more experiences at the conference and all the good ideas that will erupt from collaborations stemming from it.

ETS 2.7.1 Released!

This afternoon I tagged the ETS 2.7.1 release so we could include some fixes in the EPD Beta 2 build.

This was mainly a bug patching release for enthought.envisage and enthought.charm, but there was also an API refactor for enthought.testing to clean out some deprecated stuff that had been hanging around. To get around installation issues with easy_install and our spaghetti mess of cross-project dependencies, putting out those three updates resulted in us having to bump version numbers on 40 of the 45 sub-projects in ETS. Sigh.

Source tarballs are up at

Binary builds will be out early next week as we’re going to focus on getting beta 2 of EPD out for PyCon.