Pycon 2007 (Learning a thing or Two)

I went to <a href="http://us.pycon.org/TX2007/HomePage">Pycon</a> . I admit it

Posted by 03/07/2007

Pycon is a conference dedicated to Python - the programming language. There are lectures, discussions, and various presentations. Herein the author shares some observations gleaned from having attended said conference.

Conferences. Are you a People Person?

Pycon includes people from around the world. It is a place to rub elbows with dignitaries such as Ian Bicking and Guido van Rossum. I had my chance. I saw them in the halls. I could have said "Hey Ian - digging formencode - NOT!" - "Guido. The G-man. What gives with lambda? Dahwwwg!". I could have spoken with these people that are famous in my world and whom I largely admire, but I didn't. Because I'm not a people person. In fact I managed to somehow not speak to a single person during the entire conference - which is a remarkable feat, and a first for even me. I think it must have been the "Please don't talk to me" sign I had taped on my forehead.

In retrospect, I probably should have talked with someone. I go Pycon to hear what people have to say - but not necessarily to have conversations. In fact I actively avoid conversations. Maybe that is weird. On second thought, I'm sure it's weird. There is a reason though: despite that fact that when I write I can ramble on and on, in person I actually have little to say. There is a huge disconnect between the speech center in my brain and my thinking center. Plus I don't like people. Actually I do. Sort of. Let's just say it's a Love/Hate relationship.

But really, what's the point of going to these things? Is it to hear lectures? Is it to hear someone gloss over the rudiments of SQLAlchemy? No. You already know how to use SQLAlchemy. The real reason to go is to meet people - and possibly get a job. But that's another story. It's a chance to network, in other word. If you don't take advantage of that then you're a loser. I'm a loser, so you can take my word for it. Like they say - it takes one to know one.

I do like listening in on conversations people are having. I don't know if that is a bad thing or not. I suspect it is. You can call it eavesdropping, but I don't think it is, necessarily. I try to only listen to blowhards or people that are talking "shop". I don't listen to people talking through personal problems and I don't stare at people's hands while they are doing sign language. Because that's wrong.

PyCon

I don't plan on going over each and every talk I attended at Pycon individually because that has been done better elsewhere:

One thing I can do it compare it to last year - and compare it to the Ruby conference last October (since everything eventually boils down to Ruby vs. Python). And from those comparisons draw conclusions and make over-generalizations.

Big Turnout

This year there were more people then last year. I found this out later officially, but it was obvious. The hallways were packed. I dreaded switching rooms - especially going to the "Mesquite room" - which was a smaller room off from the main Ballroom. It was a traffic jam of people every hour. A lot harder to move around then it was last year. Conclusion: Python is more popular than it was last year.

More Women are using Python

There were more women here than last year - percentage-wise. It seemed like 5% - 10% of the people were women (10% is perhaps a little generous). Still not in accordance with the general population. But at the Ruby conference it was more along the lines of 0.01%. Why do I mention this? I don't know. It's just something that struck me. Just like the absence of women struck me as odd at the Ruby convention. I think I've already mentioned this, but the Ruby convention featured an enactment of the history of programming languages done as an episode of Star Trek (albeit at "RejectConf" - not the official conference). Tell me, does that sound like something you expect women to enjoy? As much as watching an episode of the 3 stooges? I thought it was hysterical, but if that doesn't sound like the definition of "Nerd" I don't know what does. It's there in the dictionary - next to the word; "Will reference Star Trek often and inappropriately". Woman can be nerds too - but it's less likely. Why? I don't know. That's a matter best left to the experts. But it must be related somehow to why there are less women in programming than in the general population.

Philip Eby, my favourite, wrote about the dirth of women in IT back in December. I have nothing in the way of sociological explanations. However, I have noticed a lot of project managers are women - so it may be limited to programmers rather than IT in general. Maybe programmers are sort of like car mechanics or plumbers. You don't see a lot of women in those professions, and I don't think you ever will.

And I have to say it, because I know what you're thinking - it has absolutely nothing to do with penis envy. Remember, women have better language skills then men. And don't assume that doesn't include programming languages as well. These languages just haven't caught up with the brain yet. Men can live with the dry explicitness of programming languages because of our inherent boorishness. At least that's my theory.

Should Computer Language be more like Human Languages?

I think there are some people, such as Larry Wall, who might claim that Perl is the most natural language-like of all programming languages. This could be true, in some manner - if you say that natural language is arbitrary and plastic and varies according to context. But I don't think there is anything natural about something that looks like this:

  #:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :||
  open(Q,$0);while(<Q>){if(/^#(.*)$/){for(split('-',$1)){$q=0;for(split){s/\|
  /:.:/xg;s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q*20;}print chr($q);}}}print"\n";
  #.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:|

no matter how capricious and quirky it is. Besides, you can't trust someone with a moustache. This is a universal rule. But I could be wrong. Other people claim that Ruby is closer to real language because of things like this:
 list_of_things.each do |thing|
   puts thing
 end
It still feels like a stilted and awkward language though. And the pseudo English makes it more awkward in some ways. Like Yoda-speak.

For whatever reason there were more women here than last year - and more then were at the Ruby conference in October. That's my observation without access to attendance statistics. Is it because Python is the most refined language of all - and those among us most adept at language recognize this? Or is it because Python is sexy?

No. On second thought. The parade of T-shirts with "I'm not a wizard, I just use Python" ruins that one big time. Sorry. I hate to break the news. But Python is not sexy. Neither is Ruby or Java or LISP and especially not Haskell. The day you invent a sexy programming language is the day you rule the world.

Python - Enterprise Edition?

Speaking of ruling the world, another thing I gleaned from attending the Python convention is that Python is very close to being a safe choice for any organization in any endeavor. In other words, the "Enterprise" (which is really just another word for 'big company stuff'). You can see it coming down the pike in 2 years time. So this gives everyone stomach ulcers and gives everyone that harsh abrupt tone that comes with responsibility and big business and money. Gone are the carefree days of yestermore.

The Ruby convention, in contrast, had a relaxed atmosphere. "What the hey", as I like to say. Which in one lens looks relaxed, and in another lens looks unprofessional. It was okay to listen to someone struggle with the English language. Everyone had the patience for that. Talks went into more depth, time frames were lax, everyone was listening to the same lectures in one big room. We were all in it together. Prizes were given away to names. Several times people got up and said "Matz. I want to thank you personally for inventing such a beautiful language" - to rounds of heartfelt applause.

Not so at the Python convention. It was serious and professional. Prizes were given away to numbers - and no one thanked Guido for jack. He got up and said "This is going to be the most boring talk you have ever heard". And amazingly enough, he was right. It was humorless, detailed, pedantic and d____r____y with a capital D. But I enjoyed it - precisely because it was boring, and precisely because no one got up and thanked Guido for inventing Python. I'm sure someone did that 5 years ago. But the time for flowers and hand-holding is over. Python is big-time now. Python is ready for the the big boys. Big Iron. Texas Tea.

At the Ruby convention, the attitude was different. There you scoffed at the term "Enterprise". You did not want to be a part of something that associates with that term. It's the man. Pushing you down. Where the Ruby convention was:

"Ruby is better than other languages! It's not real fast or anything. But sometimes things don't need to be so fast"
The Python convention was:
"We like this language and we intend to use it everywhere - and it can be used in a vast array of situations perfectly fine. The rapid prototyping and brevity of the language gives us a competitive advantage. And we have nothing to apologize for".

Poor Ruby? Not Really

Ruby will have it's day. But it is intricately tied with Rails forevermore. And Rails __will__ be used for 'big company stuff'. This year's RailsConf will be the last conference in which Ruby on Rails is considered marginal. That's my prediction. If it is even still considered marginal. In my world it is marginal but I live in a world where Java is cutting edge - in the world of state government IT. IBM has finally convinced everyone to go with Java. 4 years too late. I've belaboured this point before, and I will belabour it again, but at my agency they are going through the painful process of rewriting PowerBuilder applications as J2EE apps.

And J2EE is actually quite a bit bigger of a pain in the a** than PowerBuilder ever was. Trust me. Your PowerBuilder developers are not going to be feeling the love for WSAD. And your Coldfusion developers are going to abandon ship quickly. Because they are used to being able to get things done. And you do not want to lose people that like to get things done.

On the other hand, Coldfusion developers, and to a lesser extent PowerBuilder users, can deal with Rails just fine. They are used to immediate feedback and quick development cycles.

To paraphrase and misquote someone I talked with at the Ruby on Rails conference in 2006 - "We worked with J2EE. Built a bunch of automation into the system to make it palatable. Then along came Rails. Boy, that was a waste of time!". That same realization is going to hit a lot of state agencies that are working with WebSphere. And it is going to be sad day.

C++ still king

However, Python and Ruby and all the rest of them - including Java - need to do something to compete with C/C++ on the desktop. And sorry Thinking in Flex, Bruce Eckel, Flex RIAs are not going to root out C++. Flex will have it's place. It will be hyped to unimaginable degree, to a degree we haven't seen since Java in the late 90s. But it won't replace C++. Why? Because if the world is held up by a turtle, what is holding up the turtle? What do you think the ActionScript virtual machine will be written in?

Let me ask you programmers out there another question: If you were to write a desktop application that you were actually trying to sell - like Quicken - or Opera - what language would you write it in? If you said anything that is not capable of parallel processing - and is not capable of compiling to machine code - then your answer is wrong. I promise. But hope is on the horizon with PyPy, Rubinius and Parrot.

PyPy

If you want to see a microcosm of the difference between the state of the 2 languages, compare Rubinius with PyPy. They are both attempts at creating a self-hosting language environment (i.e. the compiler/interpreter is written in the language itself - rather than C). Two similar projects with similar goals. Rubinius is a thought-sausage by one very bright individual. It has the focus and clarity of one person, and it has some great approaches and ideas - it could be great. PyPy is actually funded by the EU, is a group of people, is a little hard to follow, feels a little disorganized, but it much further along and approaches usability. It's more serious. You can take it seriously. Rubinius cannot be taken seriously. Not yet. I don't think anyone would disagree with that.

Whether PyPy can be taken seriously is a matter open to conjecture, and I could be wrong. For instance, I was disappointed to hear that the funding is running out in March 2007. But it is approaching a 1.0 release, which in the opensource world, is quite a landmark.

What about Parrot, you ask?

Parrot, was talked about at PyCon and has some similarities with PyPy. I keep expecting this project to die off but it keeps slowly emerging from the depths of it's own crawlspace. Parrot is the virtual machine for Perl6. It is supposed to be able to work for a variety of languages. It uses some kind of mock assembly code that all languages compile down to - that is designed to work well with Dynamic languages, and is still readable. It also includes a parser generator that is easy to work with. There was talk of getting it to run in the Firefox browser. Which would be great. In fact that would be a dream-world for a lot of people. Forget "Flex". A JavaScript engine that runs any language. Imagine that. Something along those lines is in the future. I think the days of one/two-language dominance are over. Call me mad.

Duplicated Effort

All these projects (Rubinius, PyPy, Parrot) are doing the same things - they are all creating parser generators, they are all striving for machine-code compatible subsets of their respective language, they are all planning on targeting the .NET and JVM while creating their own VMs. I am oversimplifying to an extent, but there is a lot of overlap. Parrot is the most inclusive and if I had to put all my effort into one - it would probably be Parrot. The most succinctly conceived project is Rubinius, but the most likely to succeed could be PyPy. Go figure.

Education

The theme of PyCon2007 for me was Education. That was partially because of the talks I choose to attend. Python used in Physics, Python used in mathematics - Python used in the One Laptop Per Child project. Python used as a language to teach 9th graders to program. These are all interesting things. I've often wondered what the best way to teach programming would be. I talked about a few things when I espoused the use of DSSSL a while ago.

The reason I am so interested in how to teach programming is because I hated the first Pascal class I took in 1986. I hated it so intensely that I never wanted to program again. And I didn't ever program again - for another 10 years. I spent that time shelving books and driving delivery trucks and getting an Art degree. Only to approach computer science years later - from a different angle. And yet in high school I liked mathematics and my favourite book was Gödel, Escher, Bach . It was my bible. So the potential was there. It just wasn't realized.

This summary (PDF File) explains the process this school went through. The basic idea is that they decided to use Python instead of the more traditional C or Java to teach programming - and found that the kids still did not enjoy the class.

I thought this was interesting because, most programmers, myself included, would assume using Python would be enough to make it fun. Why is that? Well, because it's such a relief to use Python compared to Java and C++. But this means nothing to someone that hasn't programmed before.

What Vern Ceder learned is the best way to teach programming is for students to be able to create something visual - and something that they might actually want to use - as quickly as possible. No interactive shell. Nothing like this:

    >>>3 + 2
    5
Which seems so exciting and flexible to us programmers. Also, no contrived programs like this:
    print """Please enter the width and height and depth of a swimming pool 
               and I will tell you the volume"""
    width = raw_input('Width: ')
    height = raw_input('Height: ')
    depth = raw_input('Depth: ')
    print "The Volume of your swimming pool is %d" % (int(width) * int(height) * int(depth))
Instead, he had the students making a circle, making the circle bounce, and then making a screen-saver. Using LiveWires. It's still geeky in a way. But it met with less "this class sucks" responses in his survey at the end of the semester.

My Own Experience

The way I learned to program was by using Visual Basic. And it was because I could create something visually interesting in minutes, and something that I could actually use, which is precisely what they found worked for the 9th graders. So I can personally vouch for that approach.

But as for the question of how to get women into programming, well I can't answer that. My guess would be something along the same lines, but also a programming language that involves interaction and concurrency more.

Something to Ponder

For instance, how do you easily describe a family eating dinner in a programming language now. Is it like this:

def dinner(time=now()):
    dad.eats_food()
    mom.eats_food()
    kids.eat_food()
Well. That means dad will eat, then mom will eat, then the kids will eat. In that order. The language is designed, at the core, to only describe things sequentially. How do you say everyone is eating at the same time? How do you say "Mom passes the salt to dad after he takes his 3rd bite - while the kids are mashing the peas?". There isn't a way to say that, expect with threads and complexity. But it's not really that complicated is it? No wonder people hate programming.

Comments

Post a comment


Total: 0.33 Python: 0.29 DB: 0.05 Queries: 31