<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Web applications vs. Web sites, Ruby on Rails and points in between</title>
	<atom:link href="http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/</link>
	<description>Memes and other creatures</description>
	<lastBuildDate>Sun, 28 Nov 2010 21:47:35 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: Eelco Hillenius</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3628</link>
		<dc:creator>Eelco Hillenius</dc:creator>
		<pubDate>Thu, 07 Jun 2007 15:57:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3628</guid>
		<description>&gt; I believe that a rich user experience does must mean something state heavy in the server

If you use Google Web Toolkit, you don&#039;t need any state on the server. But that runs more like an applet, and has other trade offs (which I won&#039;t get into here).</description>
		<content:encoded><![CDATA[<p>&gt; I believe that a rich user experience does must mean something state heavy in the server</p>
<p>If you use Google Web Toolkit, you don&#8217;t need any state on the server. But that runs more like an applet, and has other trade offs (which I won&#8217;t get into here).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tal Rotbart</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3594</link>
		<dc:creator>Tal Rotbart</dc:creator>
		<pubDate>Thu, 07 Jun 2007 06:53:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3594</guid>
		<description>Its good to hear that Wicket allows such a balance. As indicated in the post above, I believe that a rich user experience does must mean something state heavy in the server. 

For example, if the user refreshes a page, it is important to maintain the state of items selected in the list box while the scrollbar&#039;s position is not as important.</description>
		<content:encoded><![CDATA[<p>Its good to hear that Wicket allows such a balance. As indicated in the post above, I believe that a rich user experience does must mean something state heavy in the server. </p>
<p>For example, if the user refreshes a page, it is important to maintain the state of items selected in the list box while the scrollbar&#8217;s position is not as important.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco Hillenius</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3590</link>
		<dc:creator>Eelco Hillenius</dc:creator>
		<pubDate>Thu, 07 Jun 2007 05:41:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3590</guid>
		<description>Sorry, one final thing about Wicket is that Wicket, though being a stateful framework, supports stateless pages (and forms and links etc) as an optimization.</description>
		<content:encoded><![CDATA[<p>Sorry, one final thing about Wicket is that Wicket, though being a stateful framework, supports stateless pages (and forms and links etc) as an optimization.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco Hillenius</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3589</link>
		<dc:creator>Eelco Hillenius</dc:creator>
		<pubDate>Thu, 07 Jun 2007 05:37:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3589</guid>
		<description>&gt; The debate rages on however if heavy-state web-apps can scale to web-site traffic.

Yep. And much of that is simply premature optimization imho. If you look at Wicket, a typical session will cost between 20kb and 80kb in my experience. Make that 100kb. That means you can serve 10,000 concurrent sessions on one 1GB of memory, which can easily be fitted in one box. I doubt your processor etc are gonna hold that.

Now, I&#039;m not saying server state is always ok. There are sites out there for which that would create a bottleneck - you&#039;d need session affinity, which limits your choices in load balancing, and moving state around the cluster can get expensive. And if you&#039;re operating on the scale of Google, such inefficiencies will hurt. However, how many people actually are building sites for millions of potential *concurrent* sessions? Or even hundreds of thousands? I think we can safely say the majority of the web applications being build today - certainly all those that run on intranets - do not have such extreme scaling requirements.

Bottom line is that every serious software engineer should make the calculations (what kind of traffic do you expect, what kind of fail over strategy do you need, etc). Pick the right tools for the job, and don&#039;t blindly follow the &#039;wisdom&#039; of others (look at what that brought us with those EJBs). Weigh how much extra you&#039;ll pay for the hardware opposed to paying extra for development (especially where the larger part of the cost is: maintenance!). And finally, just to be selfish, I&#039;m spending the larger part of my awake hours writing software. I want a programming model that doesn&#039;t suck!

&gt; This is a healthy discussion in any case, thanks!

The pleasure has been all mine.</description>
		<content:encoded><![CDATA[<p>&gt; The debate rages on however if heavy-state web-apps can scale to web-site traffic.</p>
<p>Yep. And much of that is simply premature optimization imho. If you look at Wicket, a typical session will cost between 20kb and 80kb in my experience. Make that 100kb. That means you can serve 10,000 concurrent sessions on one 1GB of memory, which can easily be fitted in one box. I doubt your processor etc are gonna hold that.</p>
<p>Now, I&#8217;m not saying server state is always ok. There are sites out there for which that would create a bottleneck &#8211; you&#8217;d need session affinity, which limits your choices in load balancing, and moving state around the cluster can get expensive. And if you&#8217;re operating on the scale of Google, such inefficiencies will hurt. However, how many people actually are building sites for millions of potential *concurrent* sessions? Or even hundreds of thousands? I think we can safely say the majority of the web applications being build today &#8211; certainly all those that run on intranets &#8211; do not have such extreme scaling requirements.</p>
<p>Bottom line is that every serious software engineer should make the calculations (what kind of traffic do you expect, what kind of fail over strategy do you need, etc). Pick the right tools for the job, and don&#8217;t blindly follow the &#8216;wisdom&#8217; of others (look at what that brought us with those EJBs). Weigh how much extra you&#8217;ll pay for the hardware opposed to paying extra for development (especially where the larger part of the cost is: maintenance!). And finally, just to be selfish, I&#8217;m spending the larger part of my awake hours writing software. I want a programming model that doesn&#8217;t suck!</p>
<p>&gt; This is a healthy discussion in any case, thanks!</p>
<p>The pleasure has been all mine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tal Rotbart</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3586</link>
		<dc:creator>Tal Rotbart</dc:creator>
		<pubDate>Thu, 07 Jun 2007 04:58:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3586</guid>
		<description>&gt; To come back to the original question: nope, I don’t know such a framework for Ruby, but I think it would be a gain for those who like to use Ruby for developing web apps. That is because I am convinced that the advantages of a real object oriented programming model are as true in the web tier as they are in the other layers of our applications.

I agree with that whole heartedly. The debate rages on however if heavy-state web-apps can scale to web-site traffic. 

&gt; Concerning reusable components… Take for example a panel with a search form and a pageable results list. Keeps track of it’s own state (like the currently selected results page, the search argument and the sorting) and uses it’s own resources like localized texts, images and style sheets etc. As a user, I want to be able to drop that in any page, and the only thing I want to need to know about this is the exposed API (for configuration). Whatever page/ context I drop this in, no matter how many instances, the thing should just work.

This is not easily possible in Rails even when not re-usable. In essence this is why I&#039;m looking for a framework which does ;-)

This is a healthy discussion in any case, thanks!</description>
		<content:encoded><![CDATA[<p>> To come back to the original question: nope, I don’t know such a framework for Ruby, but I think it would be a gain for those who like to use Ruby for developing web apps. That is because I am convinced that the advantages of a real object oriented programming model are as true in the web tier as they are in the other layers of our applications.</p>
<p>I agree with that whole heartedly. The debate rages on however if heavy-state web-apps can scale to web-site traffic. </p>
<p>> Concerning reusable components… Take for example a panel with a search form and a pageable results list. Keeps track of it’s own state (like the currently selected results page, the search argument and the sorting) and uses it’s own resources like localized texts, images and style sheets etc. As a user, I want to be able to drop that in any page, and the only thing I want to need to know about this is the exposed API (for configuration). Whatever page/ context I drop this in, no matter how many instances, the thing should just work.</p>
<p>This is not easily possible in Rails even when not re-usable. In essence this is why I&#8217;m looking for a framework which does ;-)</p>
<p>This is a healthy discussion in any case, thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco Hillenius</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3583</link>
		<dc:creator>Eelco Hillenius</dc:creator>
		<pubDate>Thu, 07 Jun 2007 04:22:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3583</guid>
		<description>&gt; My original question was regarding a framework for Ruby, not for Rails, but never mind.

Yeah. Sorry for having us ending up there.

&gt; I’ll still like an explanation on how Rails doesn’t allow you code re-use? Rails plug-ins are a great way to do code-reuse between applications both of whole components and pieces of functionality.

Well, first let me say that I&#039;m not a Rails expert; I&#039;m judging Rails from what I&#039;ve read and how I expect the framework to work. So please correct me if you think I&#039;m talking rubbish.

Concerning reusable components... Take for example a panel with a search form and a pageable results list. Keeps track of it&#039;s own state (like the currently selected results page, the search argument and the sorting) and uses it&#039;s own resources like localized texts, images and style sheets etc. As a user, I want to be able to drop that in any page, and the only thing I want to need to know about this is the exposed API (for configuration). Whatever page/ context I drop this in, no matter how many instances, the thing should just work.

This stuff is natural in desktop application frameworks, but unfortunately, very rarely supported in web app frameworks. And *if* it is supported - though usually without &#039;state&#039; -, you typically still need all sorts of configuration (like configuring the paths of the resources the component depends upon).

To come back to the original question: nope, I don&#039;t know such a framework for Ruby, but I think it would be a gain for those who like to use Ruby for developing web apps. That is because I am convinced that the advantages of a real object oriented programming model are as true in the web tier as they are in the other layers of our applications.</description>
		<content:encoded><![CDATA[<p>&gt; My original question was regarding a framework for Ruby, not for Rails, but never mind.</p>
<p>Yeah. Sorry for having us ending up there.</p>
<p>&gt; I’ll still like an explanation on how Rails doesn’t allow you code re-use? Rails plug-ins are a great way to do code-reuse between applications both of whole components and pieces of functionality.</p>
<p>Well, first let me say that I&#8217;m not a Rails expert; I&#8217;m judging Rails from what I&#8217;ve read and how I expect the framework to work. So please correct me if you think I&#8217;m talking rubbish.</p>
<p>Concerning reusable components&#8230; Take for example a panel with a search form and a pageable results list. Keeps track of it&#8217;s own state (like the currently selected results page, the search argument and the sorting) and uses it&#8217;s own resources like localized texts, images and style sheets etc. As a user, I want to be able to drop that in any page, and the only thing I want to need to know about this is the exposed API (for configuration). Whatever page/ context I drop this in, no matter how many instances, the thing should just work.</p>
<p>This stuff is natural in desktop application frameworks, but unfortunately, very rarely supported in web app frameworks. And *if* it is supported &#8211; though usually without &#8216;state&#8217; -, you typically still need all sorts of configuration (like configuring the paths of the resources the component depends upon).</p>
<p>To come back to the original question: nope, I don&#8217;t know such a framework for Ruby, but I think it would be a gain for those who like to use Ruby for developing web apps. That is because I am convinced that the advantages of a real object oriented programming model are as true in the web tier as they are in the other layers of our applications.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tal Rotbart</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3558</link>
		<dc:creator>Tal Rotbart</dc:creator>
		<pubDate>Thu, 07 Jun 2007 01:54:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3558</guid>
		<description>My original question was regarding a framework for Ruby, not for Rails, but never mind. 

I&#039;ll still like an explanation on how Rails doesn&#039;t allow you code re-use? Rails plug-ins are a great way to do code-reuse between applications both of whole components and pieces of functionality.</description>
		<content:encoded><![CDATA[<p>My original question was regarding a framework for Ruby, not for Rails, but never mind. </p>
<p>I&#8217;ll still like an explanation on how Rails doesn&#8217;t allow you code re-use? Rails plug-ins are a great way to do code-reuse between applications both of whole components and pieces of functionality.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco Hillenius</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3494</link>
		<dc:creator>Eelco Hillenius</dc:creator>
		<pubDate>Wed, 06 Jun 2007 07:28:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3494</guid>
		<description>:) Note that in my reply I mentioned the complaints of other people who did real projects with Rails. Maybe they didn&#039;t get it, but the experience for them was enough to ditch Rails for larger projects. Anyway, I can imagine their griefs, and I&#039;ll comment below.

&gt; Lack of static typing does not matter if you are doing test-driven development correctly.

I can follow that you catch and pinpoint errors quickly if you write lots of fine grained unit tests. In the same fashion, I can turn off my spellchecker hoping that my editor will catch all the mistakes. ;) Seriously, there&#039;s lots of debate on whether static typing is a good thing, and I&#039;m still convinced it is, though I understand not everyone agrees.

&gt; Code duplication? Ruby allows you very fine grained re-use

Yeah, Ruby does a great job at that. Rails however doesn&#039;t afaik. Not in the sense that you can develop a component like a class with all it&#039;s resources bundled, which you can drop in to any application, any context, without a single line of configuration. Something that *is* possible with most desktop frameworks, and frameworks like GWT or Wicket.

&gt; Spaghetti code can occur even in the most standard EJB application

EJBs, like most of what people consider to be the typical J(2)EE stack, are horrible. If I&#039;d have to develop using that, I wouldn&#039;t be doing Java now. Fortunately, there&#039;s a lot of choice.

Anyway, there are definitively things you can do to limit potential damage people can inflict on themselves. In general: defensive programming. A good strategy for keeping the user interface code manageable is to keep the raw presentation and the logic that works on it (to fill in the dynamic parts) stricly seperated. It&#039;s certainly not a new idea - e.g. tag libraries for JSPs (which unfortunately was too little, too late) - were introduced for this purpose, but it seems not everyone is convinced about the advantages (but read for instance http://www.amazon.com/Building-Scalable-Web-Sites-applications/dp/0596102356 - the author, the lead dev of Flickr, makes an excellent point of seperating these different layers of the UI).

All my 2c of course. I&#039;m definitively not a Ruby nor a Rails hater; I think it&#039;s great that people don&#039;t take the whole J(2)EE stack for granted anymore, and Rails probably played a big role in that. However, I still think there&#039;s a lot of good stuff in Java (like Wicket), and I need a lot of convincing before I&#039;d be ready to give that all up. :)</description>
		<content:encoded><![CDATA[<p>:) Note that in my reply I mentioned the complaints of other people who did real projects with Rails. Maybe they didn&#8217;t get it, but the experience for them was enough to ditch Rails for larger projects. Anyway, I can imagine their griefs, and I&#8217;ll comment below.</p>
<p>&gt; Lack of static typing does not matter if you are doing test-driven development correctly.</p>
<p>I can follow that you catch and pinpoint errors quickly if you write lots of fine grained unit tests. In the same fashion, I can turn off my spellchecker hoping that my editor will catch all the mistakes. ;) Seriously, there&#8217;s lots of debate on whether static typing is a good thing, and I&#8217;m still convinced it is, though I understand not everyone agrees.</p>
<p>&gt; Code duplication? Ruby allows you very fine grained re-use</p>
<p>Yeah, Ruby does a great job at that. Rails however doesn&#8217;t afaik. Not in the sense that you can develop a component like a class with all it&#8217;s resources bundled, which you can drop in to any application, any context, without a single line of configuration. Something that *is* possible with most desktop frameworks, and frameworks like GWT or Wicket.</p>
<p>&gt; Spaghetti code can occur even in the most standard EJB application</p>
<p>EJBs, like most of what people consider to be the typical J(2)EE stack, are horrible. If I&#8217;d have to develop using that, I wouldn&#8217;t be doing Java now. Fortunately, there&#8217;s a lot of choice.</p>
<p>Anyway, there are definitively things you can do to limit potential damage people can inflict on themselves. In general: defensive programming. A good strategy for keeping the user interface code manageable is to keep the raw presentation and the logic that works on it (to fill in the dynamic parts) stricly seperated. It&#8217;s certainly not a new idea &#8211; e.g. tag libraries for JSPs (which unfortunately was too little, too late) &#8211; were introduced for this purpose, but it seems not everyone is convinced about the advantages (but read for instance <a href="http://www.amazon.com/Building-Scalable-Web-Sites-applications/dp/0596102356" rel="nofollow">http://www.amazon.com/Building-Scalable-Web-Sites-applications/dp/0596102356</a> &#8211; the author, the lead dev of Flickr, makes an excellent point of seperating these different layers of the UI).</p>
<p>All my 2c of course. I&#8217;m definitively not a Ruby nor a Rails hater; I think it&#8217;s great that people don&#8217;t take the whole J(2)EE stack for granted anymore, and Rails probably played a big role in that. However, I still think there&#8217;s a lot of good stuff in Java (like Wicket), and I need a lot of convincing before I&#8217;d be ready to give that all up. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tal Rotbart</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3482</link>
		<dc:creator>Tal Rotbart</dc:creator>
		<pubDate>Wed, 06 Jun 2007 03:33:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3482</guid>
		<description>I disagree with all of your points regarding RoR and complexity. I&#039;ll elaborate:
*. Lack of static typing does not matter if you are doing test-driven development correctly. 
*. Code duplication? Ruby allows you very fine grained re-use, could you give an example of what you mean?
*. Spaghetti code can occur even in the most standard EJB application, the same type of discipline is required, no matter the language.</description>
		<content:encoded><![CDATA[<p>I disagree with all of your points regarding RoR and complexity. I&#8217;ll elaborate:<br />
*. Lack of static typing does not matter if you are doing test-driven development correctly.<br />
*. Code duplication? Ruby allows you very fine grained re-use, could you give an example of what you mean?<br />
*. Spaghetti code can occur even in the most standard EJB application, the same type of discipline is required, no matter the language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco Hillenius</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/comment-page-1/#comment-3469</link>
		<dc:creator>Eelco Hillenius</dc:creator>
		<pubDate>Wed, 06 Jun 2007 02:17:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.rationalistic.com/?p=19#comment-3469</guid>
		<description>Nope. It could use one I guess.

I&#039;m using Ruby for sysadmin stuff, and it&#039;s very nice for that, but it&#039;s not on my list to use for anything other than that. I&#039;ve simply heard too many stories of Rails projects gone wrong when complexity kicked in (larger teams, more complex user interfaces, etc), largely because of the lack of static typing, code duplication (due to lack of fine grained reuse) and the spaghetti code you&#039;ll end up with page scripting unless you&#039;re very, very disciplined.</description>
		<content:encoded><![CDATA[<p>Nope. It could use one I guess.</p>
<p>I&#8217;m using Ruby for sysadmin stuff, and it&#8217;s very nice for that, but it&#8217;s not on my list to use for anything other than that. I&#8217;ve simply heard too many stories of Rails projects gone wrong when complexity kicked in (larger teams, more complex user interfaces, etc), largely because of the lack of static typing, code duplication (due to lack of fine grained reuse) and the spaghetti code you&#8217;ll end up with page scripting unless you&#8217;re very, very disciplined.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

