Skip to main content

Python: Bambi Meets Godzilla

I just re-read a blog post that I read a couple years ago called Bambi Meets Godzilla, and I enjoyed it just as much the second time around. It's a brief history of Smalltalk, Java, Perl, Python, and Ruby, and it talks about why hype is vitally important. It also spends a fair amount of time critiquing Python's culture. If you haven't read it yet, stop reading my post, and go read it instead ;)

It reminds me of The UNIX-HATERS Handbook, which I also love. The funny thing is that to some degree, he's right about Python's culture. I've seen it with my own eyes.

Don't believe me? If I were to admit that I preferred Ruby on Rails over Django, how long do you think it would take for someone to flame me in a comment calling me either an idiot, a troll, a loser, or a heretic, or to say something like "You can recognize good design by the inanity of its detractors"?


Anonymous said…
Good rant, as you would expect from SY. It's a shame that he is still bashing Python in that piece -- all the ,,we, Ruby community, are so cool, maybe Python users will grow to our level someday'' bits sting a little, even if he adds ,,I really believe in them''. Yeah, he only forgot to mention how humble Ruby people are (more than Pythonistas, that's for sure ;-).

And his facts are, as usual, bent just a little to match his point -- like that piece about ,,proposing language changes'' that is in fact about incompatibile changes and the answer is ,,In general: no [+reasoning]'' (please feel free to use the Wayback Machine if you don't believe me, I did my best but failed anything else).

,,Erroneous'' and ,,confused'' parts are just low blows. When it comes to language spec and methodology there is no room for personal opinion (unless you're using PERL or you carry the title of BDFL). There is ,,the way it is done'' and all other ways, that are more or less incorrect. If someone is too touchy to hear ,,you're wrong'' then that person is not trying to learn anything, but is rather looking for acceptance (in all the wrong places). You loose this fine detail (meaning, you know, common sense and sanity) in between the lines about waiters and cultures. But the fact is that sometimes you're just wrong (in given context) and usually being wrong means that your way of thinking doesn't work the way you'd like it to (in given context). Because yeah, there are wrongs and there are rights (everywhere), and learning is in general about getting to see which is which.

I like Python because Python people are all about ,,batteries tested and included'', they walk-the-walk, not just talk-the-talk. I don't like Ruby because to me it's ugly, immature and if you try to say this in public you'll get bashed by this friendly community (,,... and this will get fixed in next version/VM X!''). So I would rather do Java than Ruby. It's not ugly, it's pro and its users know the difference between being frank and being dick. ;-)

(Sorry for ranting. On your blog. About his post. From 2006. Really sorry. Cheers.)
Anonymous said…
Second paragraph should of course end with (I blame this little textarea ;-):

''I did my best but failed to find anything else.''
Noah Gift said…
I have to agree with this statement, "First, inferior languages and technologies are just as likely to win." This is how life is. Read the book, Myths of Innovation, it is an eye opener.

As I have mentioned before, hype, a.k.a, marketing, is really the most important part of web development. If someone doesn't have an "A" hype game, forget about writing a web framework.
jjinux said…
> (Sorry for ranting. On your blog. About his post. From 2006. Really sorry. Cheers.)

Thanks for the comments.
Musesum said…
Hey JJ,

Thanks for reaching (via email) to an old Python enthusiast. It really is about the culture. By all measures I should be a rabid Pythonista:

1) I love whitespace
a) I wrote my first DBMS language using whitespace in 1979
b) I wrote my second Multimedia language using whitespace in 1992
c) I think Occam (the language) was cool for using whitespace
c) I think executable pseudocode can expand the "customer base"

2) I am vested in Python
a) I reconstructed the 2.4 language definition by hand
i) using a variant of BNF that used whitespace
ii) and then wrote a parser for said BNF in Python
b) I wanted to use Python as the backbone
i) for a non-programmer's media patchbay
ii) as a "my first language"
iii) that seamlessly transitions to the full version

3) I prefer “There should be one—and preferably only one—obvious way to do it” over TMTOWTDI
a) to allow other people to read my code with explaining it to them
b) to allow myself to read my code after forgetting it

And yet, I have resigned from the baypiggies list, because:

4) The Python community doesn't get Marketing
a) Python users are customers
i) you don't call your customers whiners when they complain
ii) I've heard Alex Martelli and Guido use the "whiner" epithet

b) I was turned off by the c[:]() discussion on
i) some posts pointed to some beautiful code
ii) other posters engaged in ad hominem attacks

6) My goals may be at cross purposes with Python
a) I like the utility of creating domain specific languages
i) which may be a closer fit to TMTOWTDI
b) I want to create a patchbay for non-programmers
i) for example, a twelve year old girl with an iPhone
ii) whom are welcomed by an open-minded community

In all fairness, I think that just about everyone that I've met at the Python meetups are a pure joy to be around. I even get a kick at the sometimes snarky comments. But, the community seems too defensive for the customers that I want to support.


jjinux said…
Thanks for your comments.

Popular posts from this blog

Drawing Sierpinski's Triangle in Minecraft Using Python

In his keynote at PyCon, Eben Upton, the Executive Director of the Rasberry Pi Foundation, mentioned that not only has Minecraft been ported to the Rasberry Pi, but you can even control it with Python. Since four of my kids are avid Minecraft fans, I figured this might be a good time to teach them to program using Python. So I started yesterday with the goal of programming something cool for Minecraft and then showing it off at the San Francisco Python Meetup in the evening.

The first problem that I faced was that I didn't have a Rasberry Pi. You can't hack Minecraft by just installing the Minecraft client. Speaking of which, I didn't have the Minecraft client installed either ;) My kids always play it on their Nexus 7s. I found an open source Minecraft server called Bukkit that "provides the means to extend the popular Minecraft multiplayer server." Then I found a plugin called RaspberryJuice that implements a subset of the Minecraft Pi modding API for Bukkit s…

Apple: iPad and Emacs

Someone asked my boss's buddy Art Medlar if he was going to buy an iPad. He said, "I figure as soon as it runs Emacs, that will be the sign to buy." I think he was just trying to be funny, but his statement is actually fairly profound.

It's well known that submitting iPhone and iPad applications for sale on Apple's store is a huge pain--even if they're free and open source. Apple is acting as a gatekeeper for what is and isn't allowed on your device. I heard that Apple would never allow a scripting language to be installed on your iPad because it would allow end users to run code that they hadn't verified. (I don't have a reference for this, but if you do, please post it below.) Emacs is mostly written in Emacs Lisp. Per Apple's policy, I don't think it'll ever be possible to run Emacs on the iPad.

Emacs was written by Richard Stallman, and it practically defines the Free Software movement (in a manner of speaking at least). Stal…

JavaScript: Porting from react-css-modules to babel-plugin-react-css-modules (with Less)

I recently found a bug in react-css-modules that prevented me from upgrading react-mobx which prevented us from upgrading to React 16. Then, I found out that react-css-modules is "no longer actively maintained". Hence, whether I wanted to or not, I was kind of forced into moving from react-css-modules to babel-plugin-react-css-modules. Doing the port is mostly straightforward. Once I switched libraries, the rest of the port was basically:
Get ESLint to pass now that react-css-modules is no longer available.Get babel-plugin-react-css-modules working with Less.Get my Karma tests to at least build.Get the Karma tests to pass.Test things thoroughly.Fight off merge conflicts from the rest of engineering every 10 minutes ;) There were a few things that resulted in difficult code changes. That's what the rest of this blog post is about. I don't think you can fix all of these things ahead of time. Just read through them and keep them in mind as you follow the approach above.…