<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-4887447608343482497.comments</id><updated>2012-01-06T12:39:48.377-08:00</updated><title type='text'>You work for me, Computer</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.brandonbloom.name/feeds/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/comments/default'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/comments/default?start-index=26&amp;max-results=25'/><author><name>Brandon Bloom</name><uri>https://profiles.google.com/114179817210743283438</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-wzrCTMzz79I/AAAAAAAAAAI/AAAAAAAAAbU/srDiAY0bxMk/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>114</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-3170186846877434244</id><published>2012-01-06T12:39:48.377-08:00</published><updated>2012-01-06T12:39:48.377-08:00</updated><title type='text'>I&amp;#39;m going through using Django (1.2) coming fr...</title><content type='html'>I&amp;#39;m going through using Django (1.2) coming from Rails to maintain and extend a legacy web app.  Generally I find Django more limited and painful than the Rails equivalent.  Maybe it&amp;#39;s the way we create apps or just personal preference.&lt;br /&gt;&lt;br /&gt;I think it really depends what kind of web application you&amp;#39;re building as to what works out well.&lt;br /&gt;&lt;br /&gt;Most of the web apps we deploy have pretty limited usage and are closer to the prototype side of things. They are niche, custom, broadly educational-market things that have a lot of customized UI flourishes, but underneath everything are more or less standard data driven forms-type apps.&lt;br /&gt;&lt;br /&gt;The indentation of Python that some people fuss about doesn&amp;#39;t bother me at all since I indent correctly anyway. Python&amp;#39;s methods often feel misplaced with the wrong objects to me, though.&lt;br /&gt;&lt;br /&gt;The Ruby &amp;#39;end&amp;#39; statements take a bit more space but Ruby optimizes in other ways such as with blocks and things that make the code shorter in other ways.  It&amp;#39;s more or less a wash as far as I can tell for code brevity.&lt;br /&gt;&lt;br /&gt;A lot of people I know and respect love Python and Django.  I can&amp;#39;t tell them they&amp;#39;re wrong, but I&amp;#39;m personally much more productive in Ruby even after getting used to Python for a number of months.&lt;br /&gt;&lt;br /&gt;Python performance is better than Ruby&amp;#39;s, but Rails 3.1/Ruby 1.9.2 feels much faster than previous older versions of Ruby and Rails to me.&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think there is a clear winner for all situations in the Ruby vs. Python and Rails vs. Django religious wars, but I know I prefer and work much better with Rails than with Django even after some significant ramp-up time.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/7936160275747534343/comments/default/3170186846877434244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/7936160275747534343/comments/default/3170186846877434244'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2011/09/one-year-after-accidentally-falling-in.html?showComment=1325882388377#c3170186846877434244' title=''/><author><name>Scott</name><uri>http://www.blogger.com/profile/15921714460946074219</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2011/09/one-year-after-accidentally-falling-in.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-7936160275747534343' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/7936160275747534343' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-25210809'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-593575443991593493</id><published>2011-09-24T18:19:08.040-07:00</published><updated>2011-09-24T18:19:08.040-07:00</updated><title type='text'>If you are annoyed by your slow test times you sho...</title><content type='html'>If you are annoyed by your slow test times you should watch this presentation by Corey Haines at gogaruco&lt;br /&gt;http://confreaks.net/videos/641-gogaruco2011-fast-rails-tests</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/7936160275747534343/comments/default/593575443991593493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/7936160275747534343/comments/default/593575443991593493'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2011/09/one-year-after-accidentally-falling-in.html?showComment=1316913548040#c593575443991593493' title=''/><author><name>rweald</name><uri>http://www.blogger.com/profile/17930153144957886937</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2011/09/one-year-after-accidentally-falling-in.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-7936160275747534343' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/7936160275747534343' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2011254726'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-2456948188605082978</id><published>2011-04-04T11:42:51.252-07:00</published><updated>2011-04-04T11:42:51.252-07:00</updated><title type='text'>Are you kidding?  MS couldn&amp;#39;t even get the &lt;i&gt;...</title><content type='html'>Are you kidding?  MS couldn&amp;#39;t even get the &lt;i&gt;simplest&lt;/i&gt; thing right.  Their &amp;quot;compare-object&amp;quot; is supposed to be their &amp;quot;equivalent&amp;quot; to diff.  Not so.  Not even close.  Try comparing these two files:&lt;br /&gt;&lt;br /&gt;file 1:&lt;br /&gt;a&lt;br /&gt;b&lt;br /&gt;c&lt;br /&gt;d&lt;br /&gt;&lt;br /&gt;file 2:&lt;br /&gt;d&lt;br /&gt;c&lt;br /&gt;b&lt;br /&gt;a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Unix diff correctly shows how they are different.  MS compare-objects says they are the same.  Why?  Because the latter doesn&amp;#39;t care about order.&lt;br /&gt;&lt;br /&gt;Microsoft is not &amp;quot;very smart&amp;quot;.  They are demented.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/1269333104236652268/comments/default/2456948188605082978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/1269333104236652268/comments/default/2456948188605082978'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2009/04/powershell-condemned-to-reinvent.html?showComment=1301942571252#c2456948188605082978' title=''/><author><name>Len</name><uri>http://www.blogger.com/profile/17133856850606131430</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2009/04/powershell-condemned-to-reinvent.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-1269333104236652268' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/1269333104236652268' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1209158078'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-6565606175166003234</id><published>2011-02-22T13:49:47.030-08:00</published><updated>2011-02-22T13:49:47.030-08:00</updated><title type='text'></title><content type='html'>This comment has been removed by a blog administrator.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/6565606175166003234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/6565606175166003234'/><author><name>Woo</name><uri>http://www.blogger.com/profile/13542408808075451948</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.contentRemoved' value='true'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-418681330'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-1405332339654404831</id><published>2010-09-20T00:28:12.152-07:00</published><updated>2010-09-20T00:28:12.152-07:00</updated><title type='text'>@William:  I followed the advice in comment #10 he...</title><content type='html'>@William:  I followed the advice in comment #10 here: http://railscasts.com/episodes/209-introducing-devise&lt;br /&gt;&lt;br /&gt;I tend to want to customize pretty much everything heavily :-) Also, I also explicitly did not want any views/templates/etc done for me. However, I didn&amp;#39;t look at Devise closely. If I ever revisit our authentication, I&amp;#39;ll reinvestigate it.&lt;br /&gt;&lt;br /&gt;Looking forward to those new features too. Thanks!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/1405332339654404831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/1405332339654404831'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284967692152#c1405332339654404831' title=''/><author><name>Brandon Bloom</name><uri>http://www.blogger.com/profile/16981101182779460140</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-458742338'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-8123115214665891758</id><published>2010-09-19T20:23:24.083-07:00</published><updated>2010-09-19T20:23:24.083-07:00</updated><title type='text'>I&amp;#39;d recommend devise over authlogic. Devises i...</title><content type='html'>I&amp;#39;d recommend devise over authlogic. Devises is build around warden which is kind of an authentication framework of sorts. Allows for pluggable auth strategies and already has a lot of extras(fb, twitter, imap, cas, openid). Also in rails 3.1, you&amp;#39;ll be able to flush the buffer before the page is done rendering, which should greatly increase load times. It will also come with a built in sprite system and css compression</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/8123115214665891758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/8123115214665891758'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284953004083#c8123115214665891758' title=''/><author><name>William Brian Smith</name><uri>http://www.blogger.com/profile/05693942854343589678</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2045615905'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-1421889462813836785</id><published>2010-09-19T10:25:59.289-07:00</published><updated>2010-09-19T10:25:59.289-07:00</updated><title type='text'>You probably does not know web2py.

web2py has eve...</title><content type='html'>You probably does not know web2py.&lt;br /&gt;&lt;br /&gt;web2py has everything you mentioned in that list.&lt;br /&gt;&lt;br /&gt;http://www.web2py.com/book</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/1421889462813836785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/1421889462813836785'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284917159289#c1421889462813836785' title=''/><author><name>Bruno Cezar Rocha</name><uri>http://www.blogger.com/profile/08997254325552325743</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1483509553'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-4649077124227225158</id><published>2010-09-19T04:50:58.429-07:00</published><updated>2010-09-19T04:50:58.429-07:00</updated><title type='text'>Horses for courses. Python frameworks have &lt;a href...</title><content type='html'>Horses for courses. Python frameworks have &lt;a href="http://www.niemanlab.org/2009/06/four-crowdsourcing-lessons-from-the-guardians-spectacular-expenses-scandal-experiment/" rel="nofollow"&gt;their fanbois&lt;/a&gt; too!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/4649077124227225158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/4649077124227225158'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284897058429#c4649077124227225158' title=''/><author><name>Paddy3118</name><uri>http://www.blogger.com/profile/06899509753521482267</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-718092769'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-8270781210077565603</id><published>2010-09-17T14:32:53.422-07:00</published><updated>2010-09-17T14:32:53.422-07:00</updated><title type='text'>Great list of reasons to love rails (may I add: mi...</title><content type='html'>Great list of reasons to love rails (may I add: migrations, UJS defaults, and restful controllers).  The &amp;quot;python ecosystem&amp;quot; is a appropriate phrase and the whole &amp;quot;comparing framework to language&amp;quot; debate is out of context for this article.  It is clear you taking the various frameworks and I-can-glue-this-library-to-this-one solutions into account in your support of the rails framework.&lt;br /&gt;&lt;br /&gt;As far as rails doing too much work for the developer, that is the point.  That is the whole point.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/8270781210077565603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/8270781210077565603'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284759173422#c8270781210077565603' title=''/><author><name>John</name><uri>http://www.blogger.com/profile/02993856406537196568</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-947034995'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-5904550080059170595</id><published>2010-09-17T13:42:47.091-07:00</published><updated>2010-09-17T13:42:47.091-07:00</updated><title type='text'>@Brandon ... sorry for the accusation!  I&amp;#39;ve w...</title><content type='html'>@Brandon ... sorry for the accusation!  I&amp;#39;ve watched far too many baseless arguments between the Ruby and Python groups, so maybe I&amp;#39;m a bit sensitive.&lt;br /&gt;&lt;br /&gt;In any case, the example you gave is exactly the type of information I was expecting to find in the article.  It&amp;#39;s very valuable to get the kind of comparative information you provide in your comment.&lt;br /&gt;&lt;br /&gt;As noted by Ixmatus, I find both the frameworks to have their quirks ... it&amp;#39;s the learning curve that you&amp;#39;re paying for when using either.&lt;br /&gt;&lt;br /&gt;So I generally recommend TurboGears to people that already know Python and Ruby with Ruby on Rails for those that want to learn a 4th generation scripting language and use it with a RAD web framework.  RoR definitely has the media hype and resulting community (or it could be the other way around).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/5904550080059170595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/5904550080059170595'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284756167091#c5904550080059170595' title=''/><author><name>Steve</name><uri>http://www.blogger.com/profile/04667485449091386320</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-75371321'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-95138244170501945</id><published>2010-09-17T13:34:47.117-07:00</published><updated>2010-09-17T13:34:47.117-07:00</updated><title type='text'>@lxmatus: I am quite aware of the distinctions bet...</title><content type='html'>@lxmatus: I am quite aware of the distinctions between a language and a framework. Thanks.&lt;br /&gt;&lt;br /&gt;In this case, I am genuinely making the case that the Python web-development ecosystem as a whole has a story to tell which is less coherent and less attractive than the single framework: Rails.&lt;br /&gt;&lt;br /&gt;I make this argument because I was able to use everything in this article without having to write a lot of glue code. I spent *months* researching and experimenting with Python libraries. Then I spent a week using Rails. Each of these things worked beautifully together without any heavy setup. The resulting complete stack aligned very closely with my preferences. And I&amp;#39;m a picky bastard: I tried a huuuge list of Python libraries before I found a stack I liked and I&amp;#39;m still not totally satisfied.&lt;br /&gt;&lt;br /&gt;You can say &amp;quot;TurboGears has these&amp;quot; or &amp;quot;You should try Web.py&amp;quot; but that&amp;#39;s precisely the problem. If I install Ruby, install Rails, and then visit http://ruby-toolbox.com/ and choose the most popular plugin for each thing I need: I&amp;#39;ve got a highly pleasant, well integrated, stack in hours instead of months.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/95138244170501945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/95138244170501945'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284755687117#c95138244170501945' title=''/><author><name>Brandon Bloom</name><uri>http://www.blogger.com/profile/16981101182779460140</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-458742338'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-1667098614506806353</id><published>2010-09-17T13:02:17.417-07:00</published><updated>2010-09-17T13:02:17.417-07:00</updated><title type='text'>This is a poorly researched article. You&amp;#39;re co...</title><content type='html'>This is a poorly researched article. You&amp;#39;re comparing the language Python and it&amp;#39;s vast sea of tools to Rails the framework &lt;i&gt;written in&lt;/i&gt; Ruby.&lt;br /&gt;&lt;br /&gt;Pylons (which is also the foundation for TurboGears 2) provides all you have listed above, if not more. I&amp;#39;ve also noticed a strong tendency for Rails, Django, CakePHP, and many other &amp;quot;kitchen sink&amp;quot; frameworks to do much of the work for the developer and if I wanted to get around it - it becomes a day long hackathon of digging through docs, source code, and IRC logs.&lt;br /&gt;&lt;br /&gt;Pylons, has its own quirks and dirty sides too; but I highly prefer having to spend a lot of up-front time programming/configuring my own framework environment &amp;quot;flavor&amp;quot; (and being able to use it across many different projects) then having it just be &amp;quot;Rails&amp;quot;.&lt;br /&gt;&lt;br /&gt;Next time you post something like this, compare Rails to Django, or TurboGears, or Pylons; not just &amp;quot;Python&amp;quot;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/1667098614506806353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/1667098614506806353'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284753737417#c1667098614506806353' title=''/><author><name>Ixmatus</name><uri>http://www.blogger.com/profile/13786744810089904715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1251151600'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-3453153116945992380</id><published>2010-09-17T12:23:59.266-07:00</published><updated>2010-09-17T12:23:59.266-07:00</updated><title type='text'>I removed the previous comment because the author ...</title><content type='html'>I removed the previous comment because the author deleted it himself which left a vestigial block in the comment stream saying that the post was deleted.&lt;br /&gt;&lt;br /&gt;He wrote &amp;quot;Why would you compare a framework to a programming language?&amp;quot; to which the answer is: because I&amp;#39;ve tried dozens of libraries and several frameworks in Python. Then I tried Rails. Python as an ecosystem lost out to Rails as a particular framework community for my needs.&lt;br /&gt;&lt;br /&gt;To your comment: I don&amp;#39;t really think TurboGears does. Or at least, they are not first class citizens. For example, the documentation on form handling presents several options include FormEncode, ToscaWidgets, etc. It requires that I create an additional schema class where I declare widgets outside of the templates -- or awkward @validate decorators.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/3453153116945992380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/3453153116945992380'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284751439266#c3453153116945992380' title=''/><author><name>Brandon Bloom</name><uri>http://www.blogger.com/profile/16981101182779460140</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-458742338'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-2234867663598766144</id><published>2010-09-17T12:12:57.304-07:00</published><updated>2010-09-17T12:12:57.304-07:00</updated><title type='text'>You&amp;#39;ll probably remove this too (at least you ...</title><content type='html'>You&amp;#39;ll probably remove this too (at least you read like a fan-boy) but ... you don&amp;#39;t show where Python is lacking at all in this article.  I&amp;#39;m not going to start a war but TurboGears has an equivalent to almost everything you listed there  (Although I&amp;#39;m not so sure about Rake), and I was looking forward to the &amp;quot;comparisons&amp;quot; your title implies.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/2234867663598766144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/3826999096261613374/comments/default/2234867663598766144'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html?showComment=1284750777304#c2234867663598766144' title=''/><author><name>Steve</name><uri>http://www.blogger.com/profile/04667485449091386320</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/where-rails-rocks-and-where-python.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-3826999096261613374' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/3826999096261613374' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-75371321'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-8145166763155888406</id><published>2010-09-15T06:38:08.212-07:00</published><updated>2010-09-15T06:38:08.212-07:00</updated><title type='text'>@TT: I took advantage of the fact that many people...</title><content type='html'>@TT: I took advantage of the fact that many people switch to or from Python. I searched for phrases like &amp;quot;python&amp;#39;s foo in ruby&amp;quot;. Ruby is so similar to Python, it was pretty easy to just pretend it&amp;#39;s the same and go back for cleanup as you learn the idiomatic approaches.&lt;br /&gt;&lt;br /&gt;Also, I generally just have an interest in programming languages. I&amp;#39;m pretty fluent with about a half dozen languages, so each marginal new language is that much easier to pick up.&lt;br /&gt;&lt;br /&gt;As an aside: the &amp;quot;end&amp;quot; keyword is just sooo unnecessary!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8145166763155888406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8145166763155888406'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284557888212#c8145166763155888406' title=''/><author><name>Brandon Bloom</name><uri>http://www.blogger.com/profile/16981101182779460140</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-458742338'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-8541253802686559102</id><published>2010-09-15T06:27:02.152-07:00</published><updated>2010-09-15T06:27:02.152-07:00</updated><title type='text'>Awesome post! I&amp;#39;ve been comfortable with Djang...</title><content type='html'>Awesome post! I&amp;#39;ve been comfortable with Django though I am dabbling into Rails but I&amp;#39;m having trouble with getting to grips with Ruby. Would you recommend anything you&amp;#39;ve read that allowed you build a working prototype? I&amp;#39;m curious about how you managed to learn it so quickly. Thanks!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8541253802686559102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8541253802686559102'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284557222152#c8541253802686559102' title=''/><author><name>T T</name><uri>http://www.blogger.com/profile/11485065971580692349</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1460421339'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-8025475330704685356</id><published>2010-09-14T16:30:14.361-07:00</published><updated>2010-09-14T16:30:14.361-07:00</updated><title type='text'>@kevin: I&amp;#39;ve written a bunch of watchers in th...</title><content type='html'>@kevin: I&amp;#39;ve written a bunch of watchers in the past. Each had their pros and cons.&lt;br /&gt;&lt;br /&gt;Steve has a simple Python script here: http://stevekrenzel.com/articles/autoreload&lt;br /&gt;&lt;br /&gt;However, in this case I used FSSM: http://github.com/ttilley/fssm&lt;br /&gt;FSSM has the advantage that it uses the platform&amp;#39;s native file notification mechanism, so it tends to respond more quickly (no polling delay).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8025475330704685356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8025475330704685356'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284507014361#c8025475330704685356' title=''/><author><name>Brandon Bloom</name><uri>http://www.blogger.com/profile/16981101182779460140</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-458742338'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-3071313369554762328</id><published>2010-09-14T16:18:58.897-07:00</published><updated>2010-09-14T16:18:58.897-07:00</updated><title type='text'>Could you expand on your file watcher script?  Run...</title><content type='html'>Could you expand on your file watcher script?  Running a background process (e.g. re-compile) on change is a common pattern that I haven&amp;#39;t found a tidy solution to...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/3071313369554762328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/3071313369554762328'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284506338897#c3071313369554762328' title=''/><author><name>Kevin</name><uri>http://www.blogger.com/profile/06059332339465364929</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-460892153'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-1187038802712450549</id><published>2010-09-14T06:45:15.957-07:00</published><updated>2010-09-14T06:45:15.957-07:00</updated><title type='text'>Hi,

Next time you need to authentication, try Dev...</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Next time you need to authentication, try Devise instead of Authlogic, and check Ruby Toolbox for more interesting Ruby tools.&lt;br /&gt;&lt;br /&gt;http://github.com/plataformatec/devise&lt;br /&gt;http://ruby-toolbox.com/&lt;br /&gt;&lt;br /&gt;Cheers</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/1187038802712450549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/1187038802712450549'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284471915957#c1187038802712450549' title=''/><author><name>Rafael Rosa Fu</name><uri>http://www.blogger.com/profile/17095879868901740960</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1180319052'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-8598065667273926838</id><published>2010-09-14T00:28:01.108-07:00</published><updated>2010-09-14T00:28:01.108-07:00</updated><title type='text'>Well in my case I am way more productive in Python...</title><content type='html'>Well in my case I am way more productive in Python, especially when prototyping with Django. It all depends on the mastering level of the tool. One point I will give to rails is haml tho. We need a proper equivalent well integrated in Django/Python.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8598065667273926838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/8598065667273926838'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284449281108#c8598065667273926838' title=''/><author><name>coulix</name><uri>http://www.blogger.com/profile/00810574751504451345</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-902279909'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-3098450562624688276</id><published>2010-09-13T21:31:16.842-07:00</published><updated>2010-09-13T21:31:16.842-07:00</updated><title type='text'>@brokenladder: Hell yes.</title><content type='html'>@brokenladder: Hell yes.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/3098450562624688276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/3098450562624688276'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284438676842#c3098450562624688276' title=''/><author><name>Brandon Bloom</name><uri>http://www.blogger.com/profile/16981101182779460140</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-458742338'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-2430154354576840142</id><published>2010-09-13T20:44:08.272-07:00</published><updated>2010-09-13T20:44:08.272-07:00</updated><title type='text'>Semantic indenting is far and away the best thing ...</title><content type='html'>Semantic indenting is far and away the best thing about Python, and Haml/Sass prove Ruby should adopt it too.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/2430154354576840142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/2430154354576840142'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284435848272#c2430154354576840142' title=''/><author><name>brokenladder</name><uri>http://brokenladder.myopenid.com/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2060462660'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-7738038951382875974</id><published>2010-09-13T20:30:42.157-07:00</published><updated>2010-09-13T20:30:42.157-07:00</updated><title type='text'>@Brandon

Given your article I thought your would ...</title><content type='html'>@Brandon&lt;br /&gt;&lt;br /&gt;Given your article I thought your would like the fact that in web2py everything has a default. For example is you just type:&lt;br /&gt;&lt;br /&gt;     db.define_table(&amp;#39;post&amp;#39;,Field(&amp;#39;body&amp;#39;))&lt;br /&gt;&lt;br /&gt;web2py creates the table (if it does not exist, or alters it as necessary), a web based database administrative interface, and crud.create, crud.update, crud.read, crud.select, crud.search forms that you can insert in your app like &lt;br /&gt;&lt;br /&gt;     {{=crud.create(db.post)}}&lt;br /&gt;&lt;br /&gt;It also includes role based access control out of the box with pluggable authentication mechanisms.&lt;br /&gt;&lt;br /&gt;Web2py also has a component/plugin architecture that is best described by this video http://vimeo.com/13485916&lt;br /&gt;&lt;br /&gt;Since you are coming from Python, I though you may be interested. Anyway, I too really like Rails and web2py was originally designed to be in Python but closer to Rails than other Python frameworks.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/7738038951382875974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/7738038951382875974'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284435042157#c7738038951382875974' title=''/><author><name>Max</name><uri>http://www.blogger.com/profile/09623275440139063403</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-549296158'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-6436798962139737417</id><published>2010-09-13T18:16:41.258-07:00</published><updated>2010-09-13T18:16:41.258-07:00</updated><title type='text'>I think the real lesson here is to find the right ...</title><content type='html'>I think the real lesson here is to find the right tool for the right job.  Both Rails and Django are pretty strong pieces of framework, allowing you to do a lot in a little amount of time.&lt;br /&gt;&lt;br /&gt;I had a similar experience, where I quickly prototyped a website in Rails.  I showed it off and said, &amp;quot;see...this is pretty much done.&amp;quot;  And then developers on my team felt the need to rebuild the site in PHP since that&amp;#39;s what our company &amp;#39;officially supports.&amp;#39;  :)&lt;br /&gt;&lt;br /&gt;On another project, I was able to quickly use the Django ORM to introspect an existing MySQL database, and build an admin interface for some of our internal users.  That was a HUGE win for me to be able to quickly make the admin site.&lt;br /&gt;&lt;br /&gt;So, the right tool for the right job...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/6436798962139737417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/6436798962139737417'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284427001258#c6436798962139737417' title=''/><author><name>fitzgeraldsteele</name><uri>http://fitzgeraldsteele.wordpress.com/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1900712722'/></entry><entry><id>tag:blogger.com,1999:blog-4887447608343482497.post-7094242004420303061</id><published>2010-09-13T17:25:05.923-07:00</published><updated>2010-09-13T17:25:05.923-07:00</updated><title type='text'>I originally began programming in Python with Djan...</title><content type='html'>I originally began programming in Python with Django myself, but I saw Rails and immediately went.. WTF!? to Django and Python in general.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/7094242004420303061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4887447608343482497/2717690486322200085/comments/default/7094242004420303061'/><link rel='alternate' type='text/html' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html?showComment=1284423905923#c7094242004420303061' title=''/><author><name>jbaker</name><uri>http://www.blogger.com/profile/04539056025883679125</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.brandonbloom.name/2010/09/how-two-pythonistas-accidentally-fell.html' ref='tag:blogger.com,1999:blog-4887447608343482497.post-2717690486322200085' source='http://www.blogger.com/feeds/4887447608343482497/posts/default/2717690486322200085' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1819230759'/></entry></feed>
