<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" 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:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>benclinkinbeard.com</title>
	
	<link>http://www.benclinkinbeard.com</link>
	<description />
	<lastBuildDate>Tue, 13 Oct 2009 16:54:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/return_undefined" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Swiz example application with Passive View pattern</title>
		<link>http://www.benclinkinbeard.com/2009/10/swiz-example-application-with-passive-view-pattern/</link>
		<comments>http://www.benclinkinbeard.com/2009/10/swiz-example-application-with-passive-view-pattern/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 16:54:37 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Swiz]]></category>

		<guid isPermaLink="false">http://www.benclinkinbeard.com/?p=294</guid>
		<description><![CDATA[Passive View is another presentation pattern that can be used to increase the testability of graphical applications. It does this primarily by extracting all logic and state from your views, making it pointless to test the view itself. In fact, in the article linked above, Martin Fowler says the following:
With the view reduced to a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://martinfowler.com/eaaDev/PassiveScreen.html">Passive View</a> is another presentation pattern that can be used to increase the testability of graphical applications. It does this primarily by extracting all logic and state from your views, making it pointless to test the view itself. In fact, in the article linked above, Martin Fowler says the following:</p>
<blockquote><p>With the view reduced to a dumb slave of the controller, you run little risk by not testing the view.</p></blockquote>
<p>You instead test the component to which the logic and state have been extracted. This component can be referred to by names such as mediator, presenter or controller but the name itself is irrelevant. What is important is that it is not a view component (meaning it does not exist on the display list, in Flash/Flex specific terms), which are inherently hard to unit test. In the example application I have created I refer to these components as mediators.</p>
<h5>Example Application</h5>
<p>For this post I have simply converted the <a href="http://swizframework.org/">Swiz</a> <a href="http://www.benclinkinbeard.com/2009/05/swiz-example-application-with-presentation-model-pattern/">example application</a> I created using the Presentation Model pattern. The conversion took maybe 30 minutes, which includes looking up some of the specifics of the pattern, because I had not actually implemented it before.</p>
<p><a href="http://www.benclinkinbeard.com/swiz/examples/PassiveView/">Application</a> :: <a href="http://www.benclinkinbeard.com/swiz/examples/PassiveView/srcview/index.html">Source</a></p>
<h5>Motivations</h5>
<p>One of Swiz&#8217;s biggest strengths is the flexibility it affords you when using it. Rather than enforcing (or even suggesting) a particular architecture, it provides tools and utilities that help you to create well architected applications. I think showing the same application built with different (albeit similar) presentation patterns demonstrates this point quite well. I will also admit that I was influenced by the <a href="http://wiki.github.com/robotlegs/robotlegs-framework/best-practices">RobotLegs Best Practices document</a> in selecting Passive View as the pattern to demonstrate since they demonstrate/promote the pattern there. Hell, I will even admit there was a bit of &#8220;anything you can do, we can do better&#8221; sentiment on my part. <img src='http://www.benclinkinbeard.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  That is not meant to take anything away from the RobotLegs team as they are certainly a smart bunch of guys, but I wouldn&#8217;t have joined the Swiz team if I didn&#8217;t think it was the best thing out there.</p>
<h5>Thoughts on Passive View</h5>
<p>I sort of like that your views become plain MXML with no logic, state or external references whatsoever when using the Passive View pattern. What I don&#8217;t like is what your mediator/presenter/controller becomes in order to purge your view of those things. I feel like you end up with a frankenstein class that is part (presentation) model, part controller and part code behind.</p>
<p>It is not truly code behind since it uses composition rather than inheritance, but it feels the same. You are reaching into the view to add listeners to its child components, setting properties directly on its child components, etc. Handling events from those child components is like a controller, but you also end up storing some state for the view as well. You could obviously break that out into a separate model class but for most views that is going to be massive overkill. I suppose that presentation models are or can be somewhat of a controller and model combination as well too though. I think adding all the knowledge of the view and its internals is what creeps me out most.</p>
<p>I also feel like Passive View fights against the platform a bit. Since the view has no references to anything, binding is not an option. The view can only be updated by user interaction or manually from the mediator, and even for the extremely simple example I created this felt very tedious. I also wonder if testing the mediator could not potentially be complicated by needing an instance of the view it mediates for operation. <a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit">Flex Unit 4</a> likely overcomes much of what would have been painful in the past in this area, but I feel like removing view components from the testing process completely is ideal.</p>
<p>In summary, I think Passive View is a decent pattern, but I won&#8217;t be abandoning Presentation Model to use it. In my opinion the drawbacks outweigh the benefits, but the same may not hold true for your particular needs and/or preferences.</p>
<h5>Further reading</h5>
<p>Be sure to read the Martin Fowler piece linked at the beginning of this post (and anything else by Fowler you have time for), and for another example of the Passive View pattern in Flex check out <a href="http://blogs.adobe.com/paulw/archives/2007/11/presentation_pa_6.html">Paul Williams&#8217; post</a> on the topic.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/10/swiz-example-application-with-passive-view-pattern/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Coding in Flex Builder, Compiling in Flex Builder: A Better Flash Workflow</title>
		<link>http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flex-builder-a-better-flash-workflow/</link>
		<comments>http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flex-builder-a-better-flash-workflow/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 03:33:56 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[miscellany]]></category>

		<guid isPermaLink="false">http://www.benclinkinbeard.com/?p=281</guid>
		<description><![CDATA[A couple of weeks ago, I posted about a workflow I had devised that allowed me to utilize Flash library symbols but still write my code in Flex Builder. While Adobe apparently thinks this awkward hybrid approach qualifies as &#8220;integration&#8221;, I thankfully discovered a better process just a day or so after my posting. I [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago, <a href="http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/">I posted</a> about a workflow I had devised that allowed me to utilize Flash library symbols but still write my code in Flex Builder. While Adobe apparently thinks this awkward hybrid approach <a href="http://www.flashmagazine.com/news/detail/adobe_flash_cs5_sneaks_from_fotb09/">qualifies as &#8220;integration&#8221;</a>, I thankfully discovered a better process just a day or so after my posting. I discovered the main concept of this better workflow from <a href="http://www.arpitonline.com/blog/2009/03/21/flex-builder-tip-use-swcs-for-image-assets-not-embed-metatags-for-pure-actionscript-projects/">Arpit Mathur&#8217;s blog</a>.</p>
<p>What it basically boils down to is using Flash authoring to create a SWC that you then use as a library in your ActionScript project in Flex Builder. Getting Flash authoring to generate a SWC is as simple as checking a box in the Publish Settings dialog.</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/exportSWC.png" alt="exportSWC" title="exportSWC" width="450" height="300" class="alignnone size-full wp-image-282" /></p>
<p>Then make your ActionScript project use the resulting SWC.</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/useSWC.png" alt="useSWC" title="useSWC" width="450" height="300" class="alignnone size-full wp-image-283" /></p>
<p>What you can then do is create ActionScript classes that extend the symbols in your Flash file. As long as you give your symbol a linkage name it will be available for extension (and will itself extend MovieClip by default), allowing you to add behaviors and logic using class-based ActionScript like developers expect and prefer to do. The convention I have settled on is to add &#8220;_Symbol&#8221; to the end of the class names specified in Flash authoring to make it completely clear where everything originates.</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/myButtonLinkage.png" alt="myButtonLinkage" title="myButtonLinkage" width="421" height="326" class="alignnone size-full wp-image-284" /></p>
<p>The other major advantage this approach has is that it renders the <a href="http://jessewarden.com/2008/06/designer-vs-developer-declaring-stage-instances.html">&#8220;Automatically declare stage instances&#8221; debate</a> irrelevant. You can let the designers leave this setting off and write bits of timeline code if they need to and your classes that extend their symbols will still work. Regardless if they are specified manually in class files for the symbols themselves or Flash generates the classes automatically, the children of your symbols (text fields, child movie clips, etc.) will all be available to your code.</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/myButtonClass.png" alt="myButtonClass" title="myButtonClass" width="423" height="136" class="alignnone size-full wp-image-285" /></p>
<p>With this simple structure of a symbol in Flash:</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/symbol.png" alt="symbol" title="symbol" width="300" height="275" class="alignnone size-full wp-image-286" /></p>
<p>You can write a class like this to control it.</p>
<p><script src='http://pastie.org/625467.js'></script></p>
<p>The result is a functioning button that allows the designer to use the expressive, proven tools in Flash authoring to create the graphical assets while allowing the developer to use the mature code editing environment of Flex Builder. This process has proven valuable and efficient over the last two weeks and it addresses the major shortcoming of my previous post. That was an inability to use a proper debugger, and it also lets the designer and developer work in parallel, both in the environment most familiar to them. It lets each tool and each team member do what they do best.</p>
<p>While I developed this workflow (not that its an original one by any means, just new to me) due to my assignment on a project that could not use Flex, I actually think it could be valuable in Flex projects as well. For views that are highly detailed and/or non-standard it may very well be easier to let your designer create them in Flash than it would be to create some crazy MXML file that carefully layers exported images and animations that you then try to wire up and orchestrate with code. Simply write a class that extends your designer&#8217;s symbol and manipulates it as needed.</p>
<p>To me this seems like the best kind of workflow available today by far, and so its really disappointing and frustrating to think Adobe may not be taking things a step further in their next releases. We don&#8217;t need or want Flash Builder to compile and run our projects in Flash authoring. What we need are workflows that allow us to use tools that do their job well and that we&#8217;re comfortable with, and that simplify the inevitable round tripping between design and development. Having Flash Builder trigger compiles in Flash authoring may sell more licenses to <a href="http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/">the uninformed</a>, but its a sad excuse for integration from a company that creates tools ranging from authoring to runtime.</p>
<blockquote><p><a href="http://code.google.com/p/benclinkinbeard/source/browse/#svn/trunk/examples/BetterFlashWorkflow">All code and sample files for this post</a> can be found in my Google Code repository.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flex-builder-a-better-flash-workflow/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Flex Builder error: The project properties files could not be read.</title>
		<link>http://www.benclinkinbeard.com/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/</link>
		<comments>http://www.benclinkinbeard.com/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 04:48:53 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[miscellany]]></category>

		<guid isPermaLink="false">http://www.benclinkinbeard.com/?p=265</guid>
		<description><![CDATA[I started receiving this error in a Flex library project tonight and did some Google-ing. Thanks to a comment by Eric Hélier on this bug I was able to quickly fix the issue.
Eric mentioned the marking of Flex SWCs as external, which I had recently done. In my case though, it seemed to be marking [...]]]></description>
			<content:encoded><![CDATA[<p>I started receiving this error in a Flex library project tonight and did some Google-ing. Thanks to a comment by <a href="http://www.heliereric.com/" onClick="javascript: pageTracker._trackPageview('/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/links/erichelier');">Eric Hélier</a> on <a href="https://bugs.adobe.com/jira/browse/FB-21707" onClick="javascript: pageTracker._trackPageview('/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/links/bug');">this bug</a> I was able to quickly fix the issue.</p>
<p>Eric mentioned the marking of Flex SWCs as external, which I had recently done. In my case though, it seemed to be marking locale as external that messed things up. I deleted the following line from my .actionScriptProperties file and the error disappeared, and leaving the locale merged in does not seem to affect SWC size anyhow.</p>
<p><code>&lt;libraryPathEntry kind="1" linkType="2" path="${PROJECT_FRAMEWORKS}/locale/{locale}"/&gt;</code></p>
<p>I hope this helps somebody out of a jam, preferably late at night or right at crunch time. <img src='http://www.benclinkinbeard.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Coding in Flex Builder, Compiling in Flash Authoring</title>
		<link>http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/</link>
		<comments>http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 12:15:06 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[JSFL]]></category>
		<category><![CDATA[miscellany]]></category>

		<guid isPermaLink="false">http://www.benclinkinbeard.com/?p=214</guid>
		<description><![CDATA[Nostalgia and complaining
Years ago, before AS3 and Flex 2 were on the scene, I was a Flash developer. I dabbled in other things like PHP, JavaScript and the horrific &#8220;classic&#8221; ASP, but Flash development with AS2 was always more interesting to me. I worked with great designers who of course used Macs, while me and [...]]]></description>
			<content:encoded><![CDATA[<h5>Nostalgia and complaining</h5>
<p>Years ago, before AS3 and Flex 2 were on the scene, I was a Flash developer. I dabbled in other things like PHP, JavaScript and the horrific &#8220;classic&#8221; ASP, but Flash development with AS2 was always more interesting to me. I worked with <a href="http://www.openfieldcreative.com/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/ofc');">great</a> <a href="http://www.helloample.com/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/ample');">designers</a> who of course used Macs, while me and the rest of the developers were on PCs. (Don&#8217;t worry, I use a Mac now.) In order to preserve the designers&#8217; fonts and hand crafted animations, we taught them how to assign linkage names to their symbols and would have them deliver a .swf to us that had nothing on the stage, allowing us to pull symbols out of the library as we needed. Using the fantastic <a href="http://www.mtasc.org/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/mtasc');">MTASC</a> compiler and an editor like <a href="http://www.primalscript.com/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/primalscript');">PrimalScript</a>, our class-based AS2 code would be injected into the designers&#8217; .swf, bringing the site/game/whatever to life. Ahh, those were the days.</p>
<p>Fast forward to last week when I was assigned to my first ever non-Flex AS3 project and discovered that developing like we used to in Flash (tying AS classes to library symbols) is pretty painful these days. Or at least it was for me, until I constructed a very convenient workflow that you can probably guess at based on the title of this post. Now, I should probably explain what I mean by painful. You can write your AS3 classes in Flash authoring, and the process is very straightforward; just create classes whose names match the symbol linkage names and you&#8217;re done. Just like AS2. However, Flash authoring&#8217;s code editor is absolutely abysmal. I mean, I knew it was bad, but I was actually shocked at how bad it is. It won&#8217;t even create import statements for you when you create properties! If you have used Flex Builder or any other decent editor for more than 10 minutes, this is completely unacceptable. You could also write your code in Flex Builder, save, switch to Flash authoring and then test movie or publish from there. Honestly though, do you really want to do that 500 times a day? Me neither.</p>
<p>So, what is this better way you ask? Well, we use one improvement that did come with Flash authoring&#8217;s support of AS3, which is the <a href="http://www.adobe.com/devnet/flash/quickstart/external_files_as3/#section2" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/documentClass');">document class</a> construct. This means that you simply create a custom class to represent your application, make sure it extends <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/MovieClip.html">MovieClip</a>, and tell the .fla to use it. We don&#8217;t need any code at all in our .fla, unlike <a href="http://www.bit-101.com/blog/?p=857" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/bit101');">back in the day</a>. This essentially means that your custom class is your root timeline, and adding display objects to it is like adding them to the stage.</p>
<h5>Coding in Flex Builder</h5>
<p>Since I use a Mac, Flex Builder and <a href="http://fdt.powerflasher.com/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/fdt');">FDT</a> are the only realistic options for AS3 editors, as far as I know. If you are on a PC, <a href="http://www.flashdevelop.org/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/flashdevelop');">FlashDevelop</a> is also a great program. Now, Flex Builder allows you to create ActionScript projects. In contrast to a Flex project, I assumed an ActionScript would be devoid of any reference to Flex SDKs, but this is not the case. Your ActionScript project will still reference an SDK in the compiler settings and in the build path dialog, but that is OK. Since you don&#8217;t reference any Flex classes, you will not be pulling the framework into your .swf. I think it is only referenced so Flex Builder knows where to find mxmlc, but I am not completely sure. In order to use library symbols as class instances, you will need to create corresponding classes (that extend MovieClip) for them that match the name specified in the their linkage field. Whether you need to add custom code or not, the classes must exist in order for you to reference them in Flex Builder. To reference their properties, like child text fields or buttons I declare those properties in the class and <a href="http://jessewarden.com/2008/06/designer-vs-developer-declaring-stage-instances.html" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/jessewarden');">turn off &#8220;Automatically declare stage instances&#8221;</a> in the .fla&#8217;s publish settings.</p>
<h5>Compiling in Flash authoring</h5>
<p>OK, none of that was revolutionary but now comes the hard part. How do you compile/test your project without having to switch back to Flash every time? The first piece of the puzzle is to use the <a href="http://code.google.com/p/flashcommand/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/flashcommand');">flashcommand</a> Python script that <a href="http://www.mikechambers.com/blog/2004/02/20/flashcommand-flash-command-line-compiler-for-os-x/" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/mikechambers');">Mike Chambers posted</a> a long time ago. (It is only for OS X in its current state but I would assume creating a PC-friendly version wouldn&#8217;t be too hard.) All this really does is open Flash if necessary, and compile the .fla(s) you tell it to, by writing JSFL to a temporary file and then running a line of AppleScript to execute the JSFL code. That is really great, but switching to Terminal every time I want to compile is no better than switching to Flash. I needed something I could trigger from within Flex Builder, so I naturally turned to Ant. All you need is a super simple build file, like this:<br />
<script src='http://pastie.org/607458.js'></script></p>
<blockquote></blockquote>
<p>As you can see, it just sets up a couple of properties and asks Python to run the flashcommand script. The <code>-e</code> argument tells flashcommand to include <code>doc.exportSWF()</code> in the generated JSFL, which will publish the .swf to the location specified in the <code>-o</code> argument. If this is all you need to do, but want to then launch the newly created file in Flash Player, you can add the following to your build.xml file.<br />
<script src='http://pastie.org/609620.js'></script></p>
<blockquote></blockquote>
<p>That was my initial approach but it makes viewing your traces kind of a pain. The easiest way I found was to <a href="http://en.wikipedia.org/wiki/Tail_%28Unix%29" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/links/tail');">tail</a> your flashlog.txt file but that still kind of sucks. Its especially bad because a LOT of .swfs on the web still include trace statements, meaning your Terminal is flooded with statements generated by every banner ad running in your open browsers. </p>
<p>What I ended up doing was to edit flashcommand so that the <code>-e</code> argument also adds <code>fl.getDocumentDOM().testMovie()</code> to the generated JSFL, causing Flash authoring to execute a test movie action. I also added <code>activate</code> to the end of the generated AppleScript so that Flash&#8217;s test movie window would be brought into focus and ready for interaction. This allows you to use Flash&#8217;s built in Output panel to view your trace statements, and your trace statements only. (I tried making the test movie option a separate command line argument but couldn&#8217;t get it working correctly. If any Python hackers out there want to show me the way I&#8217;d be much obliged.)</p>
<p>Set up a keyboard shortcut in Flex Builder for running Ant and your workflow is almost identical to a Flex or code-only ActionScript project. Your .swf will be generated and published to whatever location you&#8217;ve specified, and will also be opened in Flash authoring for visual inspection and testing. I am probably not the first to come up with something like this, but I didn&#8217;t find any good links on the subject and other people expressed an interest in hearing about my workflow. If you have suggestions on further improvements (like how to use Flex Builder&#8217;s debugger for these projects) I would love to hear them. Regardless, I hope this is useful to other coders who find themselves needing to develop AS3 projects that associate custom classes with library symbols.</p>
<p>If you&#8217;d like to replicate this setup, you can <a href="/wordpress/wp-content/uploads/2009/09/flashcommand" onClick="javascript: pageTracker._trackPageview('/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/files/flashcommand');">download my modified version of flashcommand</a>.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/09/coding-in-flex-builder-compiling-in-flash-authoring/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Switching domains</title>
		<link>http://www.benclinkinbeard.com/2009/09/switching-domains/</link>
		<comments>http://www.benclinkinbeard.com/2009/09/switching-domains/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 17:14:21 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[miscellany]]></category>
		<category><![CDATA[pointless blather]]></category>

		<guid isPermaLink="false">http://www.benclinkinbeard.com/?p=188</guid>
		<description><![CDATA[If you subscribe to the RSS feed it should hopefully be seamless (don&#8217;t fail me now Feedburner), but I thought I should mention it here just in case. This blog is moving to benclinkinbeard.com, and returnundefined.com will be forwarded to the new domain. Please let me know at ben.clinkinbeard AT gmail.com if you encounter any [...]]]></description>
			<content:encoded><![CDATA[<p>If you subscribe to the RSS feed it should hopefully be seamless (don&#8217;t fail me now Feedburner), but I thought I should mention it here just in case. This blog is moving to <a href="http://www.benclinkinbeard.com/">benclinkinbeard.com</a>, and <a href="http://www.returnundefined.com/">returnundefined.com</a> will be forwarded to the new domain. Please let me know at ben.clinkinbeard AT gmail.com if you encounter any issues. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/09/switching-domains/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Custom Grids and Axes in Flare</title>
		<link>http://www.benclinkinbeard.com/2009/09/custom-grids-and-axes-in-flare/</link>
		<comments>http://www.benclinkinbeard.com/2009/09/custom-grids-and-axes-in-flare/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 13:30:52 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flare]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.returnundefined.com/?p=126</guid>
		<description><![CDATA[As I mentioned in my last post, I have begun a project using the Flare data visualization toolkit, and I intend to document things I learn along the way. One of the first things I investigated, after familiarizing myself with the basics was how customizable the grids and axes for visualizations could be. It took [...]]]></description>
			<content:encoded><![CDATA[<p>As I <a href="/2009/08/digging-into-flare">mentioned</a> in my last post, I have begun a project using the <a href="http://flare.prefuse.org/">Flare data visualization toolkit</a>, and I intend to document things I learn along the way. One of the first things I investigated, after familiarizing myself with the basics was how customizable the grids and axes for visualizations could be. It took me longer than I expected to figure things out, but now that I have I would say the grids and axes in Flare are highly customizable, and should be capable of accommodating just about any needs you may have.</p>
<p>This post is mostly code and images, but in case you want to jump around here is a table of contents.</p>
<ul>
<li><a href="#bgInfo">Background info</a></li>
<li><a href="#basicGrid">Base code and a basic grid</h3>
</li>
<li><a href="#gridBounds">Controlling grid bounds</a></li>
<li><a href="#customizing">Customizing grids and axes</a></li>
<li><a href="#usefulMethods">Useful methods</a></li>
</ul>
<h5><a name="bgInfo">Background info</a></h5>
<p>Before we dive in to the examples, I need to cover a tiny bit of background information and establish some constants we'll be using. First, all of the examples will be using this simple data source:</p>
<div class="syntax_hilite">
<div id="actionscript-7">
<div class="actionscript"><span style="color: #808080; font-style: italic;">// source data</span><br />
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> arr:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> x: <span style="color: #cc66cc;">2</span>, y: <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#125;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> x: <span style="color: #cc66cc;">4</span>, y: <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">&#125;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> x: <span style="color: #cc66cc;">6</span>, y: <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#93;</span>;</div>
</div>
</div>
<p></p>
<p>As you can see, its just an array containing 3 elements who each have an <code>x</code> and <code>y</code> property. Next, we'll look at a bare bones plot chart built with Flare. The following is essentially the bare minimum of code required to create a visualization in Flare. The default visualization is a plot chart using circular shape renderers, which is fine for our purposes here. We'll be using this code as a basis for the code added/demonstrated through the rest of the post, but I won't be repeating it all every time. Lastly, remember that Flare visualizations are really just <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/Sprite.html">Sprites</a>, which means they cannot be added directly to Flex containers, only to <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObjectContainer.html">DisplayObjectContainers</a>, which is also Sprite's super class. <a href="http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html">UIComponent</a>, and therefore most every Flex component, are in fact descendants of Sprite, meaning you can add Sprites to UIComponents. For more information on Flash Player's core display classes, see <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_03.html">this page</a>.</p>
<h5><a name="basicGrid">Base code and a basic grid</a></h5>
<div class="syntax_hilite">
<div id="actionscript-8">
<div class="actionscript"><span style="color: #808080; font-style: italic;">// visualization (Flare's core element)</span><br />
<span style="color: #808080; font-style: italic;">// use Flare's Data class to convert</span><br />
<span style="color: #808080; font-style: italic;">// our Array into a format it can use</span><br />
vis = <span style="color: #000000; font-weight: bold;">new</span> Visualization<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">Data</span>.<span style="color: #006600;">fromArray</span><span style="color: #66cc66;">&#40;</span> arr <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// fill the UIComponent that will be our parent</span><br />
<span style="color: #808080; font-style: italic;">// this is a Flex app, so assume uic looks like this</span><br />
<span style="color: #808080; font-style: italic;">// &lt;mx:UIComponent id=&quot;uic&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;</span><br />
vis.<span style="color: #006600;">bounds</span> = <span style="color: #000000; font-weight: bold;">new</span> Rectangle<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, uic.<span style="color: #0066CC;">width</span>, uic.<span style="color: #0066CC;">height</span> <span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// create an axis layout (Cartesian chart)</span><br />
<span style="color: #808080; font-style: italic;">// instruct the layout/grid to use the x and y properties</span><br />
<span style="color: #808080; font-style: italic;">// of our data elements for plotting</span><br />
<span style="color: #000000; font-weight: bold;">var</span> axisLayout:AxisLayout = <span style="color: #000000; font-weight: bold;">new</span> AxisLayout<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">"data.x"</span>, <span style="color: #ff0000;">"data.y"</span> <span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #808080; font-style: italic;">// add it to the visualization's operators collection</span><br />
<span style="color: #808080; font-style: italic;">// (operators will be discussed in a future post)</span><br />
vis.<span style="color: #006600;">operators</span>.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span> axisLayout <span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// update the vis</span><br />
<span style="color: #808080; font-style: italic;">// (make it process and apply any pending changes)</span><br />
vis.<span style="color: #006600;">update</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// add it to the display list as a child of our UIComponent</span><br />
uic.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span> vis <span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>This code produces the following visualization:</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/flaregrid_01.png" alt="Default Flare grid" title="Default Flare grid" width="450" height="360" class="alignnone size-full wp-image-132" /></p>
<p>As you can see, the grid bounds are dynamically created based on the data being shown. This would be very convenient if that is what we wanted, but in my case it was not.</p>
<h5><a name="gridBounds">Controlling grid bounds</a></h5>
<p></p>
<p>If we'd like the chart's minimum values to always be zero, we can use the <code>zeroBased</code> property of the <code>xScale</code> and/or <code>yScale</code> properties of our <code>axisLayout</code>. The following code will cause both the x and y axis to begin at zero.</p>
<div class="syntax_hilite">
<div id="actionscript-9">
<div class="actionscript">axisLayout.<span style="color: #006600;">xScale</span>.<span style="color: #006600;">zeroBased</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
axisLayout.<span style="color: #006600;">yScale</span>.<span style="color: #006600;">zeroBased</span> = <span style="color: #000000; font-weight: bold;">true</span>;</div>
</div>
</div>
<p></p>
<p>To control the maximum values of our chart we can use the <code>preferredMax</code> property.</p>
<div class="syntax_hilite">
<div id="actionscript-10">
<div class="actionscript">axisLayout.<span style="color: #006600;">xScale</span>.<span style="color: #006600;">preferredMax</span> = <span style="color: #cc66cc;">10</span>;<br />
axisLayout.<span style="color: #006600;">yScale</span>.<span style="color: #006600;">preferredMax</span> = <span style="color: #cc66cc;">10</span>;</div>
</div>
</div>
<p></p>
<p>Note that there is a <code>preferredMin</code> property as well, but it (oddly) is ignored when set to zero. You can use it to set the lower bounds of your axes to any value other than zero. Adding the two snippets above has specified that our chart axes should begin at zero and end at 10, regardless of the data being shown. The resulting chart looks like this:</p>
<img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/flaregrid_02.png" alt="Custom axis bounds" title="Custom axis bounds" width="450" height="360" class="size-full wp-image-163" />
<h5><a name="customizing">Customizing grids and axes</a></h5>
<p>
To really start customizing your chart, you'll want to use the <code>xyAxes</code> property of Flare's <a href="http://flare.prefuse.org/api/flare/vis/Visualization.html">Visualization</a> class. <code>xyAxes</code> is of type <a href="http://flare.prefuse.org/api/flare/vis/axis/CartesianAxes.html">CartesianAxes</a> and contains several convenient properties, as well as providing access to <code>xAxis</code> and <code>yAxis</code> properties that represent exactly what their names say, and are both of type <a href="http://flare.prefuse.org/api/flare/vis/axis/Axis.html">Axis</a>.</p>
<p>Maybe you want to eliminate the default grid pattern in favor of a simple bottom and left border.</p>
<div class="syntax_hilite">
<div id="actionscript-11">
<div class="actionscript"><span style="color: #808080; font-style: italic;">// effectively only hides top and right borders</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">showBorder</span> = <span style="color: #000000; font-weight: bold;">false</span>;<br />
<span style="color: #808080; font-style: italic;">// show bottom border</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">showXLine</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
<span style="color: #808080; font-style: italic;">// show left border</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">showYLine</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
<span style="color: #808080; font-style: italic;">// hide vertical grid lines (along x axis)</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">xAxis</span>.<span style="color: #006600;">showLines</span> = <span style="color: #000000; font-weight: bold;">false</span>;<br />
<span style="color: #808080; font-style: italic;">// hide horizontal grid lines (along y axis)</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">yAxis</span>.<span style="color: #006600;">showLines</span> = <span style="color: #000000; font-weight: bold;">false</span>;</div>
</div>
</div>
<p></p>
<img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/flaregrid_03.png" alt="flaregrid_03" title="flaregrid_03" width="450" height="360" class="size-full wp-image-169" />
<p>The <code>xAxis</code> and <code>yAxis</code> elements also provide some useful properties that we can use to further customize our chart.</p>
<div class="syntax_hilite">
<div id="actionscript-12">
<div class="actionscript">vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">showBorder</span> = <span style="color: #000000; font-weight: bold;">false</span>;<br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">showXLine</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">showYLine</span> = <span style="color: #000000; font-weight: bold;">true</span>;</p>
<p><span style="color: #808080; font-style: italic;">// distance beyond left edge of axis</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">yAxis</span>.<span style="color: #006600;">lineCapX1</span> = <span style="color: #cc66cc;">20</span>;<br />
<span style="color: #808080; font-style: italic;">// distance beyond right edge of axis</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">yAxis</span>.<span style="color: #006600;">lineCapX2</span> = -<span style="color: #66cc66;">&#40;</span>vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">layoutBounds</span>.<span style="color: #0066CC;">width</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #808080; font-style: italic;">// distance to move labels</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">yAxis</span>.<span style="color: #006600;">labelOffsetX</span> = -<span style="color: #cc66cc;">25</span>;</p>
<p><span style="color: #808080; font-style: italic;">// distance beyond bottom edge of axis</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">xAxis</span>.<span style="color: #006600;">lineCapY1</span> = <span style="color: #cc66cc;">15</span>;<br />
<span style="color: #808080; font-style: italic;">// distance beyond top edge of axis</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">xAxis</span>.<span style="color: #006600;">lineCapY2</span> = -<span style="color: #66cc66;">&#40;</span>vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">layoutBounds</span>.<span style="color: #0066CC;">height</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #808080; font-style: italic;">// distance to move labels</span><br />
vis.<span style="color: #006600;">xyAxes</span>.<span style="color: #006600;">xAxis</span>.<span style="color: #006600;">labelOffsetY</span> = <span style="color: #cc66cc;">20</span>;</div>
</div>
</div>
<p></p>
<p>This code produces the following chart:</p>
<p><img src="http://www.benclinkinbeard.com/wordpress/wp-content/uploads/2009/09/flaregrid_04.png" alt="flaregrid_04" title="flaregrid_04" width="450" height="360" class="alignnone size-full wp-image-176" /></p>
<h5><a name="usefulMethods">Useful methods</a></h5>
<p>
There is also an <code>axisScale</code> property on the Axis class (our <code>xAxis</code> and <code>yAxis</code> elements). axisScale is typed as <a href="http://flare.prefuse.org/api/flare/scale/Scale.html">Scale</a>, but will usually be a <a href="http://flare.prefuse.org/api/flare/vis/data/ScaleBinding.html">ScaleBinding</a> instance as Scale is essentially an abstract class. Scale (or rather its subclasses) provide two very useful methods, <code>interpolate( value:Object ):Number</code> and <code>lookup( f:Number ):Object</code>. The interpolate method will return a number representing where on the scale the passed in value falls. In our example where our range is 0 to 10, 5 would return .5, 8 would return .8, etc. The lookup method essentially does the opposite, accepting a number and returning the corresponding value on the scale, meaning .5 would return 5 in our example, 2 would return 20, and so on. These methods can be extremely helpful if you need to do custom drawing on your chart, and are the kind of value translation methods that seem to be missing from the Flex charts.</p>
<h5><a name="conclusion">Conclusion</a></h5>
<p>
This is obviously not an exhaustive list of customizations possible with Flare, but it hopefully gives you an idea of the kinds of things you can do out of the box. I haven't decided which topic to cover next, so if there are specific questions or features people would like to see let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/09/custom-grids-and-axes-in-flare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digging into Flare</title>
		<link>http://www.benclinkinbeard.com/2009/08/digging-into-flare/</link>
		<comments>http://www.benclinkinbeard.com/2009/08/digging-into-flare/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 21:08:51 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flare]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.returnundefined.com/?p=119</guid>
		<description><![CDATA[If you haven't heard of Flare, go check out the demo right now. I'll wait.
Pretty cool, eh? Flare is an ActionScript port of Prefuse, a "set of software tools for creating rich interactive data visualizations" written in Java. The development of both Prefuse and Flare were led by Jeff Heer, I believe as part of [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven't heard of <a href="http://flare.prefuse.org/">Flare</a>, go check out <a href="http://flare.prefuse.org/demo">the demo</a> right now. I'll wait.</p>
<p>Pretty cool, eh? Flare is an ActionScript port of <a href="http://prefuse.org/">Prefuse</a>, a "set of software tools for creating rich interactive data visualizations" written in Java. The development of both Prefuse and Flare were led by <a href="http://hci.stanford.edu/jheer/">Jeff Heer</a>, I believe as part of his Master's thesis. I have recently begun to investigate Flare as a potential replacement for Flex charts in my current project at work and have been lucky enough to spend the past two weeks simply diving in and learning how to use the library. I needed to determine whether or not, and how easily, we can do everything we hope to on this project. My conclusion is that Flare is extremely powerful and will almost certainly support any kind of visualization we can think up.</p>
<p>That being said, our project is a Flex application, and Flare is simply an ActionScript library. It has a very basic wrapper component (<a href="http://flare.prefuse.org/api/flare/flex/FlareVis.html">FlareVis</a>) that extends Flex's <a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Canvas.html">Canvas</a> component, which allows basic instantiation and configuration in MXML but the library is not especially Flex-friendly. My plan is to create some wrapper APIs and higher level classes that will make using Flare in Flex much easier. What is even cooler is that our awesome client has expressed their desire for these enhancements to be contributed back to the community so that others may benefit. There is a lot of work to be done but I am really excited to start making progress. For example, Flare doesn't have specific components like a Bubble Chart, you simply have a base <a href="http://flare.prefuse.org/api/flare/vis/Visualization.html">Visualization</a> class that you customize and extend to create what you need. Developing with Flare has reminded me of my old AS2 days because of its dynamic qualities and freedom from the constraints the Flex framework places on you. (Note I am certainly not knocking Flex; its how I make my living and the only kind of serious AS3 work I have ever done.)</p>
<p>Flare works with lower level classes than you normally would in Flex, with <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/Sprite.html">Sprite</a> being the core display class. This is undoubtedly one of the reasons you can attain such amazing performance with Flare. During one of my tests I animated 2000 bubbles on a chart with no noticeable slowdown or degradation, which I don't think would be the case on a Flex chart. In case you are not aware, Sprites are like single frame MovieClips in Flash. They do not have an internal timeline, but they are a direct extension of <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObjectContainer.html">DisplayObjectContainer</a>, meaning they can contain child objects. They of course also have a graphics property that allows you to use the <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=Drawing_Vector_Graphics_2.html">drawing API</a> to customize their appearance. They are not <a href="http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html">UIComponents</a>, so you cannot add them directly to containers in Flex, but that is not a big deal. You can add them as a child of a UIComponent instance, and then add the UIComponent to a container like usual.</p>
<p>That is probably enough introduction and rambling for now, but you can expect a steady stream of posts from me about various aspects of Flare, further experiments and progress on the wrapper APIs. For more frequent and less formal updates, you should follow me on Twitter <a href="http://twitter.com/bclinkinbeard">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/08/digging-into-flare/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Group for Flare</title>
		<link>http://www.benclinkinbeard.com/2009/08/google-group-for-flare/</link>
		<comments>http://www.benclinkinbeard.com/2009/08/google-group-for-flare/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 15:17:08 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[miscellany]]></category>
		<category><![CDATA[pointless blather]]></category>

		<guid isPermaLink="false">http://www.returnundefined.com/?p=116</guid>
		<description><![CDATA[I have created a Google Group for the Flare data visualization library. Flare is currently hosted on SourceForge and their forums are terrible. I have started (and will continue for some time) working with Flare pretty extensively, so rather than suffer in silence (something I may in fact be incapable of doing) I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>I have created a <a href="http://groups.google.com/group/flare-data-viz">Google Group</a> for the <a href="http://flare.prefuse.org/">Flare</a> data visualization library. Flare is currently hosted on SourceForge and their forums are terrible. I have started (and will continue for some time) working with Flare pretty extensively, so rather than suffer in silence (something I may in fact be incapable of doing) I decided to create a group somewhere better. Hopefully this better platform will help boost the level of discussion, because it is currently pretty low. If you know current or potential Flare developers, or are one yourself, please help spread the word and join the discussion.</p>
<p>I will soon be starting a series of posts about Flare, so if the library interests you be sure to check back soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/08/google-group-for-flare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Camp in the ATL</title>
		<link>http://www.benclinkinbeard.com/2009/08/flash-camp-in-the-atl/</link>
		<comments>http://www.benclinkinbeard.com/2009/08/flash-camp-in-the-atl/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 04:14:26 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.returnundefined.com/?p=112</guid>
		<description><![CDATA[Flash Camp Atlanta 2009 is happening August 28 at the Georgia World Congress Center. Whether you are just getting into the Flash Platform or you're a veteran looking for some fresh inspiration, Flash Camp will be a great one-day event with a great speaker lineup.
Greg Wilson of Adobe is the keynote speaker, and the rest [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flashcampatlanta.eventbrite.com/">Flash Camp Atlanta 2009</a> is happening August 28 at the <a href="http://www.gwcc.com/">Georgia World Congress Center</a>. Whether you are just getting into the Flash Platform or you're a veteran looking for some fresh inspiration, Flash Camp will be a great one-day event with a great speaker lineup.</p>
<p>Greg Wilson of Adobe is the keynote speaker, and the rest of the day looks to be filled with quality content as well. <a href="http://www.cubicleman.com/">Douglas Knudsen</a>, <a href="http://www.benstucki.net/">Ben Stucki</a>, <a href="http://undertheinfluenceofdesign.wordpress.com/">Christian Saylor</a>, <a href="http://jessewarden.com/">Jesse Warden</a>, <a href="http://www.davidtucker.net">David Tucker</a>, <a href="http://www.ngenworks.com/">Carl Smith</a> and <a href="http://www.leifwells.com/index.cfm">Leif Wells</a> are all on the roster. The day's theme is "Enabling the Convergence of Art &#038; Science With The Flash Platform."</p>
<p>The price is just $54.95 per person, or $34.99 per person for groups of 3 or more. When you consider the fact that most 3 day conferences cost $500 minimum, the price for Flash Camp is an amazing deal. I unfortunately can't make it to the event, but I hope to make it to a Flash Camp in the very near future.</p>
<p><strong>Disclaimer:</strong> I'm employed by <a href="http://www.universalmind.com/">Universal Mind</a>, an elite group of technologists who excel at solving the difficult challenges of building and optimizing rich internet applications, and also the primary sponsor of <a href="http://flashcampatlanta.eventbrite.com/">Flash Camp Atlanta 2009</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/08/flash-camp-in-the-atl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swiz example application with Presentation Model pattern</title>
		<link>http://www.benclinkinbeard.com/2009/05/swiz-example-application-with-presentation-model-pattern/</link>
		<comments>http://www.benclinkinbeard.com/2009/05/swiz-example-application-with-presentation-model-pattern/#comments</comments>
		<pubDate>Thu, 28 May 2009 02:20:53 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Swiz]]></category>

		<guid isPermaLink="false">http://www.returnundefined.com/?p=106</guid>
		<description><![CDATA[About a month ago I was introduced to the Swiz application framework for Flex. Within an hour or so, I was not only sold on the simplicity and effectiveness of the framework, I was digging around in the source adding features. Shortly after that I started collaborating more closely with Chris Scott, creator of Swiz [...]]]></description>
			<content:encoded><![CDATA[<p>About a month ago I was introduced to the <a href="http://swizframework.googlecode.com/">Swiz</a> application framework for Flex. Within an hour or so, I was not only sold on the simplicity and effectiveness of the framework, I was digging around in the source adding features. Shortly after that I started collaborating more closely with <a href="http://cdscott.blogspot.com/">Chris Scott</a>, creator of Swiz and a coworker of mine, and <a href="http://soenkerohde.com/">Sönke Rohde</a>, the other Swiz team member. The three of us have been cranking away adding new features ever since and have a lot planned for the coming months.</p>
<p>Now that introductions are out of the way, let's look at some code. I'm really not going to try and explain much of anything here because I've done that (heavily) in the code and comments of the application. In the recent past I have repeatedly found myself frustrated with a lack of examples when reading about new frameworks or projects people are promoting. I learn best and quickest when I can see something in action and figure out how it works, so I created this example for other people like me. If you have questions, comments or suggestions about the application you can obviously post them here, or you can post them in the <a href="http://groups.google.com/group/swiz-framework">Swiz Google Group</a> where I will also be posting a link.</p>
<p>Lastly, a couple of disclaimers.</p>
<ul>
<li>Only the Employees view of the application contains anything. I only created multiple tabs to facilitate the mode monitor at the bottom of the app.</li>
<li>I've placed the ASDocs above the metadata tags for the sake of readability and simplicity. In a real application the ASDocs (unfortunately) go between the metadata and the code.</li>
</ul>
<p><a href="/swiz/SwizUserAdmin/">Application</a> :: <a href="/swiz/SwizUserAdmin/srcview/index.html">Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benclinkinbeard.com/2009/05/swiz-example-application-with-presentation-model-pattern/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
