<?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: 5 GWT Anti-patterns</title>
	<atom:link href="http://www.zackgrossbart.com/hackito/antiptrn-gwt/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/</link>
	<description></description>
	<lastBuildDate>Thu, 05 Jan 2012 19:59:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Aegean BM</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-33065</link>
		<dc:creator>Aegean BM</dc:creator>
		<pubDate>Wed, 17 Nov 2010 23:44:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-33065</guid>
		<description>Favor CSS over table tags is one of those designer rules that is hard to explain. 

1. We&#039;ve all listened to the experts tell us the orthodox way, only to see to see the wind shift another direction. So we&#039;re skeptical. If it ain&#039;t broke, don&#039;t fix it.

2. We favor the tool we know over the tool we don&#039;t. I can get this page done in an hour using tables, or I can spend a day and maybe get it done with CSS.
 
3. Tables have a scaling problem. A single table is usually simple enough. But then you put another inside it, and.. eventually you have tables in tables in tables. I&#039;ve never seen tables go 4 deep because 3 deep is already insane.

4. Tables, especially tables in tables, are a maintenance problem. Pay attention to how much time you spend on changes.

5. Tables go away, except for true tabular data, for designers that go with CSS. It&#039;s hard to explain to those who haven&#039;t made the journey. They haven&#039;t had enough table pain yet. They haven&#039;t felt enough CSS relief yet. Until then, the CSSers appear as fanatics adhering to the standard du jour.

6. Watch the trend. Every year, some tablers go on to CSS, no CSSers go back to tables.</description>
		<content:encoded><![CDATA[<p>Favor CSS over table tags is one of those designer rules that is hard to explain. </p>
<p>1. We&#8217;ve all listened to the experts tell us the orthodox way, only to see to see the wind shift another direction. So we&#8217;re skeptical. If it ain&#8217;t broke, don&#8217;t fix it.</p>
<p>2. We favor the tool we know over the tool we don&#8217;t. I can get this page done in an hour using tables, or I can spend a day and maybe get it done with CSS.</p>
<p>3. Tables have a scaling problem. A single table is usually simple enough. But then you put another inside it, and.. eventually you have tables in tables in tables. I&#8217;ve never seen tables go 4 deep because 3 deep is already insane.</p>
<p>4. Tables, especially tables in tables, are a maintenance problem. Pay attention to how much time you spend on changes.</p>
<p>5. Tables go away, except for true tabular data, for designers that go with CSS. It&#8217;s hard to explain to those who haven&#8217;t made the journey. They haven&#8217;t had enough table pain yet. They haven&#8217;t felt enough CSS relief yet. Until then, the CSSers appear as fanatics adhering to the standard du jour.</p>
<p>6. Watch the trend. Every year, some tablers go on to CSS, no CSSers go back to tables.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Birkett</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-12327</link>
		<dc:creator>Andrew Birkett</dc:creator>
		<pubDate>Mon, 10 May 2010 15:06:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-12327</guid>
		<description>Hey Zack, Interesting post... but I wanted to comment on item 5. FlexTable.

Yeah, I totally agree tables died a long time ago when it comes to layout. However, when it comes to GWT there are various layout containers you can use that use div&#039;s under the hood and that rely on good old css positioning.

Gwt Flex table is great at what it&#039;s designed for. Showing tabular data. I think its a case of use for what it&#039;s intended for.</description>
		<content:encoded><![CDATA[<p>Hey Zack, Interesting post&#8230; but I wanted to comment on item 5. FlexTable.</p>
<p>Yeah, I totally agree tables died a long time ago when it comes to layout. However, when it comes to GWT there are various layout containers you can use that use div&#8217;s under the hood and that rely on good old css positioning.</p>
<p>Gwt Flex table is great at what it&#8217;s designed for. Showing tabular data. I think its a case of use for what it&#8217;s intended for.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zack Grossbart</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-10788</link>
		<dc:creator>Zack Grossbart</dc:creator>
		<pubDate>Thu, 18 Mar 2010 21:13:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-10788</guid>
		<description>Thanks for your comment mc.

GWT makes it easy to prototype, but there are other frameworks (JQuery MooTools) that are much better for prototyping.  GWT excels at creating large maintainable applications.  

What you are really talking about is GWT inability to totally abstract you from HTML.  You&#039;re right.  GWT doesn&#039;t totally abstract you from GWT.  Nothing does.  I&#039;ve never seen a programming language that totally abstracts you from the underlying architecture.

The DTO pattern is one that you can follow more or less, but the basic idea is realizing that HTTP requests are expensive and combining them makes a lot of sense.  We normally have many widgets and a helper class for saving the data.</description>
		<content:encoded><![CDATA[<p>Thanks for your comment mc.</p>
<p>GWT makes it easy to prototype, but there are other frameworks (JQuery MooTools) that are much better for prototyping.  GWT excels at creating large maintainable applications.  </p>
<p>What you are really talking about is GWT inability to totally abstract you from HTML.  You&#8217;re right.  GWT doesn&#8217;t totally abstract you from GWT.  Nothing does.  I&#8217;ve never seen a programming language that totally abstracts you from the underlying architecture.</p>
<p>The DTO pattern is one that you can follow more or less, but the basic idea is realizing that HTTP requests are expensive and combining them makes a lot of sense.  We normally have many widgets and a helper class for saving the data.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mc</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-10787</link>
		<dc:creator>mc</dc:creator>
		<pubDate>Thu, 18 Mar 2010 20:57:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-10787</guid>
		<description>Reading the debate about tables vs CSS I really feel that it completely ignores the fact that GWT is designed to enable developers to create web applications without the need to do the scripting, HTML. You can even leave the default CSS as it is. The point is that you can get a working application deployed very fast without thinking about tables.

The DTO pattern just does not always work for me. The problem is a bit less obvious, it&#039;s more an effort in finding the right balance. Consolidating all your ajax calls into two calls to get/set the data seems ok but you are also fixating the data structure that a particular page can use which reduces flexibility. How does this work when you&#039;ve got widgets that you&#039;d like to reuse everywhere?</description>
		<content:encoded><![CDATA[<p>Reading the debate about tables vs CSS I really feel that it completely ignores the fact that GWT is designed to enable developers to create web applications without the need to do the scripting, HTML. You can even leave the default CSS as it is. The point is that you can get a working application deployed very fast without thinking about tables.</p>
<p>The DTO pattern just does not always work for me. The problem is a bit less obvious, it&#8217;s more an effort in finding the right balance. Consolidating all your ajax calls into two calls to get/set the data seems ok but you are also fixating the data structure that a particular page can use which reduces flexibility. How does this work when you&#8217;ve got widgets that you&#8217;d like to reuse everywhere?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zack Grossbart</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-10254</link>
		<dc:creator>Zack Grossbart</dc:creator>
		<pubDate>Wed, 03 Mar 2010 00:39:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-10254</guid>
		<description>This isn&#039;t specific to GWT.  As JavaScript applications get more complex there will be more processing on the client-side.  Our little thin clients are getting thicker.  If you want to track these operations on the server-side you can add JavaScript calls to tools like &lt;a href=&quot;http://www.haveamint.com&quot; rel=&quot;nofollow&quot;&gt;Mint&lt;/a&gt; or Google Analytics.</description>
		<content:encoded><![CDATA[<p>This isn&#8217;t specific to GWT.  As JavaScript applications get more complex there will be more processing on the client-side.  Our little thin clients are getting thicker.  If you want to track these operations on the server-side you can add JavaScript calls to tools like <a href="http://www.haveamint.com" rel="nofollow">Mint</a> or Google Analytics.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TheGWTcritic</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-10248</link>
		<dc:creator>TheGWTcritic</dc:creator>
		<pubDate>Tue, 02 Mar 2010 23:47:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-10248</guid>
		<description>Why oh why did Google use anchor tags? If you want to web analytics or look at logs and see what is being clicked, outside of js tagging, this makes GWT hits impossible to track!? If you want to capture and montior all the requests just as they were clicked, you can&#039;t because the HTTP protocol won&#039;t pass the anchor tags, so you can&#039;t see what is happening. If you wanted to recreate the entire session, just as it occurred, you can&#039;t. 
I realize that they are doing everything client side, so it works for their code, but for analytics, debugging, monitoring, and session recreation it is a nightmare!</description>
		<content:encoded><![CDATA[<p>Why oh why did Google use anchor tags? If you want to web analytics or look at logs and see what is being clicked, outside of js tagging, this makes GWT hits impossible to track!? If you want to capture and montior all the requests just as they were clicked, you can&#8217;t because the HTTP protocol won&#8217;t pass the anchor tags, so you can&#8217;t see what is happening. If you wanted to recreate the entire session, just as it occurred, you can&#8217;t.<br />
I realize that they are doing everything client side, so it works for their code, but for analytics, debugging, monitoring, and session recreation it is a nightmare!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zack Grossbart</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-3106</link>
		<dc:creator>Zack Grossbart</dc:creator>
		<pubDate>Mon, 10 Aug 2009 20:25:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-3106</guid>
		<description>Stefan,

Thank you for commenting.  I&#039;ve heard them called many things, but encapsulating your data is always a good idea.</description>
		<content:encoded><![CDATA[<p>Stefan,</p>
<p>Thank you for commenting.  I&#8217;ve heard them called many things, but encapsulating your data is always a good idea.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stefan</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-3105</link>
		<dc:creator>Stefan</dc:creator>
		<pubDate>Mon, 10 Aug 2009 20:22:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-3105</guid>
		<description>Nice article Zack. 

I suppose the suggested UITO is what Fowler called a Data Transfer Object (DTO).</description>
		<content:encoded><![CDATA[<p>Nice article Zack. </p>
<p>I suppose the suggested UITO is what Fowler called a Data Transfer Object (DTO).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elias Mårtenson</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-2980</link>
		<dc:creator>Elias Mårtenson</dc:creator>
		<pubDate>Wed, 05 Aug 2009 15:38:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-2980</guid>
		<description>@Zack,

In general terms, what you say is correct. However, the above article as well as my comments were referring to layout within the confines of GWT.

With GWT, making a self-contained widget using the table-based layout primitives is a lot more easy and manageable than using CSS. With CSS, you can&#039;t simply move a widget to a completely different position in the DOM-hieararchy without having to rewrite a lot of the CSS. Especially if you want to have a proper design that adopts itself to the width (and height) of the browser window.

Also, of course, there is no need to mess with table, tr and td tags when using GWT.

So, to summarise: I agree with you on the advantages of CSS when designing a page using hand-written HTML. I absolutely do not agree when it comes to GWT layouts, which is what the article was about.

At the end of the day I suppose it comes down to what one&#039;s approach to GWT design is: Are you trying to build a web page using Java code, or are you trying to write a Java application that runs on a web page? I tend to gravitate towards the latter camp.</description>
		<content:encoded><![CDATA[<p>@Zack,</p>
<p>In general terms, what you say is correct. However, the above article as well as my comments were referring to layout within the confines of GWT.</p>
<p>With GWT, making a self-contained widget using the table-based layout primitives is a lot more easy and manageable than using CSS. With CSS, you can&#8217;t simply move a widget to a completely different position in the DOM-hieararchy without having to rewrite a lot of the CSS. Especially if you want to have a proper design that adopts itself to the width (and height) of the browser window.</p>
<p>Also, of course, there is no need to mess with table, tr and td tags when using GWT.</p>
<p>So, to summarise: I agree with you on the advantages of CSS when designing a page using hand-written HTML. I absolutely do not agree when it comes to GWT layouts, which is what the article was about.</p>
<p>At the end of the day I suppose it comes down to what one&#8217;s approach to GWT design is: Are you trying to build a web page using Java code, or are you trying to write a Java application that runs on a web page? I tend to gravitate towards the latter camp.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zack Grossbart</title>
		<link>http://www.zackgrossbart.com/hackito/antiptrn-gwt/#comment-2978</link>
		<dc:creator>Zack Grossbart</dc:creator>
		<pubDate>Wed, 05 Aug 2009 14:16:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.zackgrossbart.com/hackito/?p=221#comment-2978</guid>
		<description>Elias,  

My biggest reason for using CSS instead of tables is that it is easier.  CSS does take a little more effort to learn, but once you do each page is easier to create and make it look good.  CSS is also much easier with dynamic layouts.  Take a look at my &lt;a href=&quot;http://www.zackgrossbart.com/hackito/jsgrid/&quot; rel=&quot;nofollow&quot;&gt;Dynamic Grid Layout In JavaScript&lt;/a&gt; article.  Writing the code to generate a few CSS properties is much more manageable than handling all of the TABLE, TR, and TD tags.  

...but that is just my opinion.</description>
		<content:encoded><![CDATA[<p>Elias,  </p>
<p>My biggest reason for using CSS instead of tables is that it is easier.  CSS does take a little more effort to learn, but once you do each page is easier to create and make it look good.  CSS is also much easier with dynamic layouts.  Take a look at my <a href="http://www.zackgrossbart.com/hackito/jsgrid/" rel="nofollow">Dynamic Grid Layout In JavaScript</a> article.  Writing the code to generate a few CSS properties is much more manageable than handling all of the TABLE, TR, and TD tags.  </p>
<p>&#8230;but that is just my opinion.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

