<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: When in Rome&#8230;</title>
	<atom:link href="http://ericgreveson.wordpress.com/2008/08/12/when-in-rome/feed/" rel="self" type="application/rss+xml" />
	<link>http://ericgreveson.wordpress.com/2008/08/12/when-in-rome/</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Thu, 14 Aug 2008 08:03:18 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Theo</title>
		<link>http://ericgreveson.wordpress.com/2008/08/12/when-in-rome/#comment-4</link>
		<dc:creator>Theo</dc:creator>
		<pubDate>Thu, 14 Aug 2008 08:03:18 +0000</pubDate>
		<guid isPermaLink="false">http://ericgreveson.wordpress.com/?p=7#comment-4</guid>
		<description>I agree completely. In general the Flex framework is the best I&#039;ve worked with, I&#039;ve never been so productive. But when it comes to the details it&#039;s as you say, you shake your head and wonder what on earth they were thinking.

Consider the Flex collections API, it&#039;s so monstrously bad in its design that it isn&#039;t even funny. The two main interfaces are ICollectionView and IList, but none of them are usable by itself, you have to have a combination of both, the ArrayCollection class. It&#039;s like it was designed to be the exact opposite of &quot;program to interfaces, not implementations&quot;. The next episode of Architectural Atrocities is probably going to about the collections API.</description>
		<content:encoded><![CDATA[<p>I agree completely. In general the Flex framework is the best I&#8217;ve worked with, I&#8217;ve never been so productive. But when it comes to the details it&#8217;s as you say, you shake your head and wonder what on earth they were thinking.</p>
<p>Consider the Flex collections API, it&#8217;s so monstrously bad in its design that it isn&#8217;t even funny. The two main interfaces are ICollectionView and IList, but none of them are usable by itself, you have to have a combination of both, the ArrayCollection class. It&#8217;s like it was designed to be the exact opposite of &#8220;program to interfaces, not implementations&#8221;. The next episode of Architectural Atrocities is probably going to about the collections API.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ericgreveson</title>
		<link>http://ericgreveson.wordpress.com/2008/08/12/when-in-rome/#comment-3</link>
		<dc:creator>ericgreveson</dc:creator>
		<pubDate>Wed, 13 Aug 2008 21:00:31 +0000</pubDate>
		<guid isPermaLink="false">http://ericgreveson.wordpress.com/?p=7#comment-3</guid>
		<description>Hi Theo,

First of all, thanks for leaving the first ever comment on my blog, and making it more intelligent than &quot;omg I got the first post!!1!one!&quot;. I&#039;ve been doing this blog for a whole two days now, and I&#039;m already learning things from it - good stuff.

I am indeed in danger of propagating dependencies - in fact I believe I may have made a small amount of progress down that road already. It&#039;s nice to know that there are frameworks that help remove this problem. I&#039;m still relatively new to Flex, so it will be interesting to give things like Mate a try.

One of the more concerning aspects of Flex is that the Adobe &quot;guidance&quot; and &quot;best practices&quot; are so hit-and-miss, which is fairly off-putting for people learning the technology. Even some of the core Flex libraries and ActionScript language features are terribly designed. It might be a result of its Flash ancestry, but the UI parts seem to be much higher quality than the data structures / algorithms behind it all. It really needs something like the C++ standard template library to provide some good data structures to build apps with. Or maybe I just haven&#039;t got my head round it yet...</description>
		<content:encoded><![CDATA[<p>Hi Theo,</p>
<p>First of all, thanks for leaving the first ever comment on my blog, and making it more intelligent than &#8220;omg I got the first post!!1!one!&#8221;. I&#8217;ve been doing this blog for a whole two days now, and I&#8217;m already learning things from it &#8211; good stuff.</p>
<p>I am indeed in danger of propagating dependencies &#8211; in fact I believe I may have made a small amount of progress down that road already. It&#8217;s nice to know that there are frameworks that help remove this problem. I&#8217;m still relatively new to Flex, so it will be interesting to give things like Mate a try.</p>
<p>One of the more concerning aspects of Flex is that the Adobe &#8220;guidance&#8221; and &#8220;best practices&#8221; are so hit-and-miss, which is fairly off-putting for people learning the technology. Even some of the core Flex libraries and ActionScript language features are terribly designed. It might be a result of its Flash ancestry, but the UI parts seem to be much higher quality than the data structures / algorithms behind it all. It really needs something like the C++ standard template library to provide some good data structures to build apps with. Or maybe I just haven&#8217;t got my head round it yet&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Theo</title>
		<link>http://ericgreveson.wordpress.com/2008/08/12/when-in-rome/#comment-2</link>
		<dc:creator>Theo</dc:creator>
		<pubDate>Wed, 13 Aug 2008 07:46:29 +0000</pubDate>
		<guid isPermaLink="false">http://ericgreveson.wordpress.com/?p=7#comment-2</guid>
		<description>Even though I think you&#039;re on the right track to a good solution for your UserPreferenceManager I would like to point out a problem. You risk putting yourself in the position described by the anti-pattern called &quot;propagating dependency&quot;. Simply put you are likely to find yourself having classes that are passed the UserPreferenceManager only to satisfy the dependency of another class (e.g. the MainView needs the UserPreferencesManager only to propagate it to, say, PreferencesView). In a way one could argue that just passing an object down the object hierarchy isn&#039;t dependency injection at all since it passes the object to classes that don&#039;t strictly have a dependency on it.

The way to get rid of that problem is either to wire up the object structure in one place so that dependencies are only passed to the objects that actually depend on them. This is how most dependency injection frameworks work, they read some kind of description of all dependencies and have a container that does the instantiation and wiring. In Flash/Flex that Prana is an example of this solution.

The other way is to use the application framework Mate, which has a feature called Injectors that listen for initialization events from the views and inject the dependencies at that point (and sets up a binding while it&#039;s at it, making it even more powerful).

If you&#039;re interested in a really good Flex application framework and think that dependency injection is a good solution I really think you should look at Mate (http://mate.asfusion.com). It is, in my opinion the only contender on the Flex application framework scene. As you seem to have noticed all the others think that global variables is a good solution to most problems.</description>
		<content:encoded><![CDATA[<p>Even though I think you&#8217;re on the right track to a good solution for your UserPreferenceManager I would like to point out a problem. You risk putting yourself in the position described by the anti-pattern called &#8220;propagating dependency&#8221;. Simply put you are likely to find yourself having classes that are passed the UserPreferenceManager only to satisfy the dependency of another class (e.g. the MainView needs the UserPreferencesManager only to propagate it to, say, PreferencesView). In a way one could argue that just passing an object down the object hierarchy isn&#8217;t dependency injection at all since it passes the object to classes that don&#8217;t strictly have a dependency on it.</p>
<p>The way to get rid of that problem is either to wire up the object structure in one place so that dependencies are only passed to the objects that actually depend on them. This is how most dependency injection frameworks work, they read some kind of description of all dependencies and have a container that does the instantiation and wiring. In Flash/Flex that Prana is an example of this solution.</p>
<p>The other way is to use the application framework Mate, which has a feature called Injectors that listen for initialization events from the views and inject the dependencies at that point (and sets up a binding while it&#8217;s at it, making it even more powerful).</p>
<p>If you&#8217;re interested in a really good Flex application framework and think that dependency injection is a good solution I really think you should look at Mate (<a href="http://mate.asfusion.com)" rel="nofollow">http://mate.asfusion.com)</a>. It is, in my opinion the only contender on the Flex application framework scene. As you seem to have noticed all the others think that global variables is a good solution to most problems.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
