Python: PyCon 2005 random thoughts

Some people have asked me to provide some comments on PyCon 2005. Here is an informal collection of impressions and opinions. I won't cover the Web topics because I've already done that.

Alex Martelli's talks are a joy. I especially liked his talk on 'Descriptors, Decorators, Metaclasses: Python's "Black Magic"'. I just wish he had more time. 25 minutes is simply not enough time to understand the subjects he is trying to convey unless you already understand them.

PyPy is definitely not what I thought it was. Apparently, it's about type inference. I thought it was an attempt to rewrite the front-end of the Python interpreter in Python so that the front-end could be shared among all the versions of Python. If this were the cases, the front-end could be distributed as .pyc's, and all the versions of Python would only need to write VM's to interpret the .pyc's. :-/

wxPython is a pain to use. PythonCard is a wrapper around wxPython that makes it a joy to use. PythonCard is obviously not as mature as a lot of widget toolkits, as I can see obvious deficiencies (e.g. more sophisticated layout strategies). However, it is quite impressive.

Schevo is interesting. It's a GUI for object databases.

"Dabo, the 3-tier Database Application Framework" is a database-neutral, GUI-neutral RDBMS GUI. The author complained about wxPython a lot. The author mentioned that 80% of his effort was spent working around wxPython. I asked why he didn't use PythonCard. He said he wanted to remain GUI neutral. The whole thing looked like a bit of a waste of time :-/

Durus is a trimmed down version of Zope's object database. Having seen Schevo, I can see that object databases can make a certain set of database problems a bit simpler to solve.

Soap box warning:
However, I just don't see why people have to spend so much time trying to solve problems that were already solved in the 70's. Why does everyone hate SQL? I think SQL's the best thing to happen to computer science in the last 30 years! Here are things that RDBMS's do that object databases have a hard time with (although some do succeed with some of these points):
  • Cluster.
  • Atomic transactions that work even if the power chord is pulled at an inopportune moment.
  • Query extremely large data sets without transmitting all of the data to the client. Furthermore, the RDBMS can execute the query one hard drive block at a time without trying to bring the whole table into memory.
  • View the data in ways it wasn't meant to be viewed, i.e. do joins on arbitrary fields.
Concerning iterators and generators, I took away these two points:
  1. Anytime the loop logic gets complicated, write a generator so that the loop logic can be reused.
  2. Use the itertools module. It's blazingly fast and convenient.
"Sequential Code in an Event-Driven World" was basically "generators are cool."

"Python for Series 60" was impressive. I want one, but Sprint doesn't have them. Bang for buck, it's hard to beat Symbian phones.