Hi, Jamie...

On Friday 19 January 2007 03:04, Jamie wrote:
> I've been struggling to learn how to use Pylons and it's getting to the
> point that I'm about to give up and just use Django.

Ewww... the dark side? :)

> I need some advice on how to make this less painful.
>
> I've been a (professional) web developer for over a decade now and
> can't remember ever being this frustrated with learning a new trick. I
> started back in 1997 as a Perl guy. Then I moved to Microsoft ASP and
> then to ASP.Net. However, the .com crash then made it difficult to find
> work on large, ambitious web projects. ASP.Net was overkill for the
> corporate identity sites I was building to eat so I learnt PHP. Now I'm
> creating larger web projects again and feel like I'm wearing a
> straightjacket when using PHP. But I want to stay with open-source so a
> couple of months ago I began to teach myself Python.

Although Python has for long not been a typical web application language I 
think it has become an insider's tip. I assume that you are used to have 
things more tightly coupled. In PHP there is a clear way to access a 
database. There are a few helpers that deal with templates. But either you 
need third-party components, too, or the tools aren't comfortable (e.g. an 
ORM is way better than writing SQL statements).

> I'm at the point now that I'm comfortable with writing productive apps
> in Python and am looking for a good MVC framework.

My first rather large project (mentors.debian.net) is written in Python 
solely by using the MySQLdb and CGI modules. I wrote pure SQL. I created 
HTML pages from within the code just by using the nifty '%' variable 
substitution. I tried to stay with tools that are mostly in the standards 
library. Authentication and cookie handling was all done manually. And the 
application is still far more readable than the countless projects I did 
in Perl. But it can be better. I consider refactoring the 
mentors.debian.net CGIs and replace them by a web framework. Pylons looks 
promising so far.

> I started with 
> Django and found it reatively easy to pickup. However, one of the
> reasons it's easy is because all the components are so closely tied
> together. I decided to buckle down and try to learn Pylons because of
> how loosely coupled everything is and I agree with the WGSI philosophy.
> But having to learn Myghty/Cheetah (still haven't decided), SQLAlchemy,
> Paste, and Routes all at once sucks. Add in the lack of my Python
> background and things are overwhelming.

For me learning most aspects of Python was rather hard. I wanted to find 
patterns I know in Perl/PHP and translate them to Python. That didn't work 
at all because Python has some programming concepts that are unknown to 
the rather simple languages like Perl/PHP. Back in the university days I 
had to learn Scheme (a LISP dialect) and Modula-2. (That has been in the 
last decade and I must say I'm deeply disappointed about the junk you 
learn there.) Nobody taught us about C, C++ and object-oriented 
programming. So I just didn't understand certain concepts. Thanks to the 
book "Beginning Python" I think I learned most aspects in no time.

And actually the point why I love open source is that I can take any 
component that has proven to work and glue it together to get a whole. You 
wouldn't start writing a name server - there's Bind. Why invent a web 
server for static files - there's Apache. Program a new database - or just 
go with PostgreSQL or MySQL. You need to learn Bind to run a name server 
and learn about httpd.conf to run a web server and even learn some SQL 
(and knowing MySQL doesn't help you much when trying to use PostgreSQL). 
That's what LAMP is all about. And I think this is what Pylons about, too. 
You certainly need to learn about the components it uses but

(a) Pylon tries to create a basic framework that glues the parts together
    so that they work well together  and
(b) if you aren't happy about a component it's more or less easy to replace
    it

Enough with the preaching. Yes, I've been playing around with Django and 
Turbogears and Pylons for weeks in my spare time. I didn't like Django 
because it seemed to be good for web projects that are 99% 
content-management. You need the same things time and again. And Django 
provides them. But do anything that Django isn't good it and it gets 
extraordinarily hard. My impression of course. I find the approach of 
Django a bit strange. Why have they reinvented the wheel? Were they 
frustred too and felt that recreating the parts was easier than 
understanding what others did?

Turbogears looked promising. I was confused by a lot of FUD 
saying "everybody's moving to Django anyway" but Turbogears was nice. 
Especially the Mochikit integration since I wanted to play with AJAX. I 
mainly didn't like that it used SQLobject and although you can use it with 
SQLAlchemy some features wouldn't work with it. I have no real argument 
against it. And the community is way bigger, too.

Pylons was where the journey has ended so far. SQLAlchemy is nice (I now 
only heard the rumors about shortcomings of SQLobject but also encountered 
some myself). The templating with Myghty (or Mako) was very nice. I didn't 
need to learn another artificial language like in Kid or (worst of all) 
Django. It's just Python - the language I learned and want to use. It's 
actively developed (which may make it hard to follow in real-life projects 
that still need to run in 5 years - I don't know). And the people involved 
on IRC are nice, too. (Even though everybody besides me seems to live in 
Australia so nobody's talking to me during my common business hours. :) )

> Is there anyone else out there that is trying to learn this all at
> once? How are you doing it?

I wasn't doing well. I'm the impatient type. Actually I'm not only 
impatient but also a perfectionist (without a deadline). I'm trying to 
find the perfect tool for any job so I can decide for one when it's time 
for a new project. So I'm often wasting time trying all available systems 
(Django, Turbogears, Pylons, etc.) and even reading many of other people's 
opinions about those to make up my mind. It would probably be easier to 
decide for one and see if it works out. But that's me. :)

So I knew Python. But I didn't work with SQLAlchemy before. I didn't know 
about Myghty. I hadn't heard of Paste before. And I was even scared to 
work with a web framework because most of my regular clients run a site at 
a common web hoster who offers nothing more but Perl as CGI, maybe Python, 
MySQL and an FTP access.

Before the length of my mail grows up to math.infity: Yes, I know how you 
feel. My suggestion would be to start with the tutorial to have some 
instant success. Then as you need it dig deeper into the documentation of 
each component. My personal learning curve was pretty flat because I took 
the top-down approach. I started with as much knowledge as I had and once 
I needed a new feature I looked it up in the appropriate location. It's 
very slow at the beginning but later gets you on the track rather quickly. 
The myghty web site for example is just plain evil. I don't need a syntax 
diagram kind of documentation or a reference for kernel developers. Just 
tell me the most frequently used features and how to use them. I have now 
written a few parts of my new application. And when something works I'm 
looking up some examples to find out whether there are better ways to 
accomplish the same result.

> My suggestions to the maintainers: You need to vastly improve the docs
> if you're serious about increasing user adoption; the QuickWiki one in
> particular. There are just too many statements along the lines of "see
> the official docs for X for more info". The bassakwards presentation of
> the QuickWiki is also confusing. A start-to-finish, step-by-step
> walkthrough on how to create a database-driven Pylons app would be a
> boon to the project. "If you're using Postgres, do A, B,C. If you're
> using MySQL do D,E,F". "If you're using SQLAlchemy do this. SQLObject
> do that." Just my two cents...

Such an approach sounds reasonable for Django. And the Djangobook project 
is a nice effort. But they have reinvented every wheel so there is nothing 
they can refer/link to anyway. But imagine you are a web hoster who offers 
LAMP. Would you provide a documentation to your customers on how to use 
the database, submit SQL queries and how to program Perl?

I second that Pylons needs more and better documentation. But the blog and 
wiki tutorials are nice already to get started. They just leave you with a 
lot of questions. What looks easy for someone who has worked with Pylons 
or knows the other components Pylon uses is just confusing for newbies. 
And that's also a problem of creating good documentation: the moment you 
know all the aspects of something to be able to write documentation it's 
hard to think as a newbie. Well, I doubt there is a way to document "the 
right way" while Pylons is evolving and offers you to use different parts 
(e.g. SQLobjects instead of SQLAlchemy or Mako instead of Myghty).

My personal contribution might be 
http://workaround.org/moin/PylonsCheatsheet which I mainly started for 
myself. I couldn't remember everything when I started my first controller. 
So from time to time I add something I learned there. After a week I knew 
how to create URLs with h.url_for() and what 'h' stands for and where it 
comes from. Perhaps one day I can contribute it with more content. Right 
now it may look a bit ridiculous. :)

Don't give up. Perhaps we'll meet on IRC?

Kindly
 Christoph

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to