Python Conference Coming Soon
nnorwitz writes "PyCon 2004 is coming to Washington, DC at the end of March. It's a great place to meet lots of smart people and learn new things. Many interesting discussions go far beyond Python into other programming languages and topics. We should find out more about the Pie-thon, the OSAF since Mitch Kapor is the keynote speaker. There may even be a few surprises. The price is only $175, but early bird registration ends soon. It's not too late to submit a presentation either. I hope to see lots of new faces this year! I want to talk to some Perl and Ruby zealots^Wconverts^Wprogrammers. :-)"
Sorry, stumbled into the wrong item. No need now to get my hopes up about an entire conference of us going "Ni!" and arguing about unladen sparrows and testing our John Cleese impersonations.
Python is great.g i"
import urllib
import sys
from whrandom import choice
import string
entryid = 2979
cgiurl = "http://www.jayallen.org/cgi-bin/mt/mt-comments.c
message_text = """
"""
def GenEmail():
chars = string.letters
username = ""
hostname = ""
for i in range(5):
username = username + choice(chars)
hostname = hostname + choice(chars)
email = username + "@" + hostname + ".com"
return email
def GenWebsite():
chars = string.letters
site = ""
for i in range(8):
site = site + choice(chars)
site = site + ".com"
return site
def RandomProxy():
# high anonymity from 2004.01.06
proxylist = ["http://213.131.72.19:8080/", "http://203.124.247.50:80/", "http://66.123.154.53:80/", "http://200.29.132.50:8000/"]
rtnprox = choice(proxylist)
return rtnprox
def pseudoname():
chars = string.letters
name = ""
for w in range(6):
name = name + choice(chars)
return name
def rndmessage():
chars = string.letters
msize = [10, 15, 20, 25]
wsize = [2, 4, 5, 6, 7, 8, 10, 12]
message = ""
for l in range(choice(msize)):
for m in range(choice(wsize)):
message = message + choice(chars)
message = message + " "
return message
thisproxy = RandomProxy()
for i in range(int(sys.argv[1])):
proxies = {'http': thisproxy}
opendev = urllib.FancyURLopener(proxies)
par = urllib.urlencode(
{
'entry_id': entryid,
'author': pseudoname(),
'email': GenEmail(),
'text': rndmessage(),
#'text': message_text
'post': " Post ",
'checkbox': "false",
'url': GenWebsite()}
)
f = opendev.open(cgiurl, par)
print f.read(8096)
This shows how much of a non-issue spam is, and a small but loud minority shout about spam until their head explodes.
Sorry, Python is a lot better than Perl but then again so's VB, eh?
.. what they fail to mention is, one way *per Python version*.
.. why the heck don't we all just call obj.__repr__() directly? And do we really need *four* underscores? And do we really need to type 'self' all the time???" At that moment, the Rubification will begin.
The Python community is turning into a bizarre mirror-image of the Perl community: full of themselves and a little too eager to show off the latest "trick" you can do in Python.
I read Python books/sites and they say with a straight face "the great thing about Python is there's only one way to do things"
I first used Python at 1.5 when it was pushed as a "prototyping language". I'm not coming back until they finish figuring out their object model and scoping rules.
Someday, a bright Pythoner will get hit by lightning and realize, "hey, str(obj) just calls obj.__repr__()
Sincerely,
Ruby Zealot
Someone told me Lisp is faster and more powerful than Python, Perl and Ruby. Is he right?
Sure there are a lot of similarities, but I prefer Ruby's purer OO model and I don't prefer Python's whitespace as syntax requirements and the need to type self everywhere (not to mention all those underscores). And where's the fun in there's only one way to write it?
Python definately has some advantages over Perl, but as a Rubyist, it doesn't offer me any advantages that would convince me to switch.
'Different strokes for different folks' as they say down at the retirement center
This is from the Python page!
Scheme has the following advantages to Python:
* Supports proper closures, with lexical scoping.
* Any function can be defined anonymously, via the lambda keyword.
* Is supported by a standard (R5RS, IEEE)
* Makes it easy to program in a functional style, i.e., without side effects.
* Supports macros.
* Mathematically oriented, rather then processor oriented, numeric model.
* Supports fairly optimized compilation to native code.
Gosh, this isn't biased. Well, I'm sure it is, in fact, one place to meet smart people, but I wish whomever was organizing this thing wasn't basing it in D.C., which is also a great place to get shot, spend money on mediocre food, either freeze to death or fry in ridiculous humidity, and generally hang out with interns working for lawyers, students wanting to become lawyers, or lawyers.
Yeah, granted, the PyCon people will probably not be lawyers, but it is D.C. so you never know. And who decided D.C. was a likely meeting place for programmers? George Washington University? Yawn.
At least Perl people go on cruises. Nah. Sign me up for the PyCon when they hold it in Vegas, like normal technology conventioneers, and we do Twisted seminars by day and other twisted things by night.
Chr0m0Dr0m!C
I like a *lot* of what I see in Ruby, and I strongly agree with your criticisms of Python (though I'm still undecided about the whitepace issue.)
Even so, I think Matz's attitude about Unicode and internationalization rules Ruby out as a serious candidate for me.
All Windows and Macs machines being sold today already use Unicode. The Unix world is in last place but the conversion is happening almost everywhere. The very last holdout against Unicode will probably be the Unix-style OSes in Japan. While all other platforms are Unicode and most of the Unix world is converted, they will be the last of the legacy holdouts.
Japanese *nix is also the center of Matz's focus, and it shows. He has made it clear that the principal driving force behind Ruby's design is to help him do his own Japanese work in an encoding (EUC-JP) that he says is "good enough for me [him]". Since EUC-JP doesn't support anything well except for Japanese, he clearly doesn't internationalize his own work, and his comments make it pretty clear that anyone who does want to follow modern internationalization practices had better look elsewhere for a language.
Also, the libraries in Ruby are far less developed than in Python, and I don't see them getting "good enough" anytime soon. Matz's Japanese Unix-centric community just hasn't produced the libraries that the rest of us are beginning to demand from our production languages.
If I were just tinkering around with personal utilities and if legacy subset charsets were good enough for my text needs, then it might be all right. But I need lots of big, solid, production quality libraries for Unicode-based commercial systems, and Ruby isn't close. (Even Python is a stretch.)
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
I've heard about ports of Python to the Perl's new bytecode called Parrot. Ruby to Parrot is called Cardinal .
I don't know if it's a reason to wake up, though.
All of the Python core team (including Guido until recently) live in DC. Granted, it's better if the conference was held in Vegas, on a cruise ship or in Monaco parhaps, but you're forgetting that the organizers of it are volunteers and do not get paid. The days when you could get a sponsor to shell out a few hundred grand to fly everyone to Vegas are gone.
DC is home to places like NASA, NIST, NIH... Quite a few well known open source folk live out this way.
I don't get out much these days, but before the .com craze, there were quite a few interesting places for programmers to meet. The DCLUG (past meetings) was one of them. I don't know what the status of the DCLUG is these days, but I remember Linus's talk in 95, this is way before most people even heard of Linux.
The Parrot folks are under some gross misunderstanding about the complexity of Python. Anyway, as long as they are having fun - let them revel in their collective dillusion. If you want a real speedup today (not 10 years from now) - check out the Psyco Python optimizer.
Ruby2 will have Unicode support. Read this.
If I could give you a mod point for the interesting pointer I would.
One slide indicating that Unicode encodings may, at some vague point in the future, be treated on a par with the obsolete national legacy encodings Matz prefers is hardly a bold step toward internationalization. It's more of Matz's "well, if you want to use Unicode, I won't stop you" level of commitment to internationalization.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Why do you take the posting of a Python Conference as an attempt to get you to switch? Some of us happen to feel quite secure in our choices and don't take the success of other languages as a threat or conversion attempt. You should try it sometime, where "it" is being confident and secure in your own choices.
My Suburban burns less gasoline than your Prius.
Why do you take the posting of a Python Conference as an attempt to get you to switch?
;-)
;-)
Well, as you might recall, the original post of the story contained the following at the end:
I want to talk to some Perl and Ruby zealots^Wconverts^Wprogrammers.
So I was just obiging
I suppose that sentence was a bit ambiguous as it could mean that he/she wants to talk to people who had converted* to Perl or Ruby from Python (or any other language), but I read it as he/she wanted to talk to people who had converted* from Perl or Ruby to Python. Given that it's a Python conference being held in DC, I highly doubt that anyone who had converted to Ruby would bother to show up for her/him to talk to as they would likely be attending Ruby conferences, therefore I suspect that the latter interpretation was the intended meaning. Given this, it was not too much of a stretch to think that the poster was looking for converts* from Ruby to Python, so I merely expressed my doubts about wanting (or needing) to make such a conversion*.
*NOTE: the useage of the words 'convert' or it's derivitives ('conversion', 'converts', etc) should be construed to mean that that the language in question (as in 'I am a Ruby convert') is the favorite programming language known and used by the person uttering (or typing) the phrase, however it should not be contrued to mean that the language in question is the only programming language known/used by the person uttering (or typing) the phrase.
If it's still not clear, I'll try it again with some indentation
'Different strokes for different folks' as they say down at the retirement home
There are those of us who think whitespace delimitation stinks, and for very valid reasons. Rather than be such zealots about how super whitespace delimiting is and how clueless the rest of the world is for not agreeing about it, why don't the python folks just code an option to make it available by e.g. a pragma at the top of a file? In my opinion, and that of many, many people, it's a show stopper. I really wish there wasn't so much zealotry in programming language design. That goes for all programming languages unfortunately.
to realizing that they are screwed in the Pie-thon challenge.
Right now the Parrot folks are working on this opcode:
PYTHON [python script]
where it shells out to Guido's Python interpreter.
I don't mean to offend you, but just curious: How do you feel when you use here documents, which include whitespace as syntax requirements?
What about the voice of Geddy Lee?
How did it get so high?
I wonder if he speaks like an ordinary guy?
(I know him, and he does)
I think it's more than unicode...
A while back I (a long-time perl guy) decided to look into ruby and python. I liked some of python's rethinking of certain ideas, but I liked ruby's total-OO and was really taken with it. BUT it was nearly impossible to find any English resources. It was definitely still a Japanese cult with some US initiates. So I stuck with perl.
Maybe there are an abundance of resources for ruby now. (By "resources" I mean code examples, web sites, bundled packages, etc.) I'm not sure, but that is the BIG holdup in my opinion, not just an insular view on unicode.
In terms of python... Two months ago I had a co-worker who was getting emails that confused their POP server, ending up in jammed messages. I wrote a perl script that would detect such messages and delete them.
BUT I hadn't accounted for a certain buffering/length issue and the script broke a week ago. Since MacOS X comes with perl, python, and ruby installed, I decided to revisit python.
Good online docs, a useful POP package (that allowed me to customize/override it in a very easy way), etc, and I wrote a python version that could not have the buffering issue, had better error checking, and took about 1/3 the number of lines.
Python seems to me to be fairly clean in syntax and OO and it seems to truly deliver on its Batteries Included philosophy. Has ruby grown enough that it provides a similar support structure (accessible to me)?
I've been a long-time Perl programmer, though I've not used a boatload of packages nor much of the horrid OO.
A couple of years ago, I decided to look into Python and Ruby. Python looked OK, but not that different. I did like the indent-as-group idea, which was different. Ruby looked very cool. But it was impossible to get good documentation. It seemed like a Japanese cult with a few western initiates.
Well, MacOS X ships with Perl, Python, and Ruby (and PHP, and ...) so I figured I'd try them again.
I still find Ruby more intriguing, but I've settled on Python. Why?
Well, Perl is an expedient measure that (for me) doesn't scale up and has that horrible OO syntax. (So I never used it much.) If you're going to read someone else's Perl, you had better be "in the zone".
A couple of months ago, I'd written a quick Perl script that would "unstick" a co-worker's POP email. The problem is the Windows-based POP server is too stupid to realize a message doed not end in CRLF, so it just appends a period then CRLF thinking it's doing well. But the period ends up not being alone on a line, so it's not a valid termination to the message. Which messes up their email program. Sigh.
A week ago, the script broke because I hadn't properly accounted for the fact that the user might have hundreds of messages queued up. (I hadn't used a Perl POP package, which might've handled it, but just threw it together myself. Yes, that would've made the Perl code more competitive with the other two solutions.)
So I decided this might be a nice exercise to try Python. And it went together very quickly using Python's POP3 package. Then I decided to try it in Ruby. I think one little portion of the code shows the difference between the two cultures.
The problem is that the message is not properly terminated, so you need to time out and catch that timeout to realize, "hmmm, malformed". In Python I had:
Hmmm, how do I get it to time out after 5 seconds and how do I catch that? The online docs are pretty good, but I had to guess that POP3 was built on the socket package. Looking at socket's docs I found the proper command and exception. I had to include:
before the POP3 commands to set the default socket timeout to 5 seconds. Andis the proper way to catch the timeout. Both of these things are in the socket documentation.Contrast this with Ruby. The Ruby docs are less complete, but they did mention that POP was subclassed from protocol and you'd have to look at protocol's source to see how it works. Looking through protocol, I figured out what to do and it was more elegant.
The protocol class had a read_timeout, but since Ruby's mantra might be said to be "Real OO", the POP code had been written such that you could say
after the POP open and it set the timeout for that pop connection to 5 seconds. Almost as if POP passed the read_timeout upstream to socket automatically. (I don't think Ruby does, but it's coded to look that way.)My experience is limited, but it feels like this example gives a good feel for the two languages. Python was better documented and things came together quickly. Ruby ultimately had a more elegant solution, but was more poorly documented. This echoes the mantras: Python's is "Batteries Included", while Ruby's might be "Real OO".
On a personal note, I usually prefer an elegant solution, but when the language goes so far as to consider
to be reasonable, I check out. I know there's syntactic sugar so I don't have to code like that. I know everything's an object. But, dammit, a constant integer is an integer with constant value and causing it to iterate is too weird for my poor head to accept.