<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Digital Primates</title>
	<atom:link href="http://www.digitalprimates.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.digitalprimates.net</link>
	<description>Flex Development and Consulting</description>
	<lastBuildDate>Thu, 12 Jan 2012 18:30:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Michael Labriola named a 2012 MAX Master</title>
		<link>http://www.digitalprimates.net/author/news/2011/11/08/michael-labriola-named-a-2012-max-master/</link>
		<comments>http://www.digitalprimates.net/author/news/2011/11/08/michael-labriola-named-a-2012-max-master/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 23:01:19 +0000</pubDate>
		<dc:creator>DP in the News</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.digitalprimates.net/?p=921</guid>
		<description><![CDATA[Adobe named our own Michael Labriola a MAX Master for 2012, one of only nine external speakers to earn the title. The MAX Master award is given to presenters with the highest speaker rating based on audience surveys from MAX &#8230; <a href="http://www.digitalprimates.net/author/news/2011/11/08/michael-labriola-named-a-2012-max-master/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<p><a title="MAX Masters 2012" href="http://http://max.adobe.com/blog/2011/max-masters-announced.html" target="_blank">Adobe named our own Michael Labriola a MAX Master for 2012</a>, one of only nine external speakers to earn the title. The MAX Master award is given to presenters with the highest speaker rating based on audience surveys from <a title="MAX 2011" href="http://max.adobe.com/" target="_blank">MAX 2011</a>. Nice work, Mike!</p>

<div id="attachment_922" class="wp-caption alignnone" style="width: 403px"><a href="http://www.digitalprimates.net/wp-content/uploads/master-blaster.jpg"><img class="size-full wp-image-922" src="http://www.digitalprimates.net/wp-content/uploads/master-blaster.jpg" alt="Master Blaster" width="393" height="320" /></a><p class="wp-caption-text">Funny, we always thought of him as more of a Blaster.</p></div>

]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/news/2011/11/08/michael-labriola-named-a-2012-max-master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talking Trash &#8211; An overview of Player GC</title>
		<link>http://www.digitalprimates.net/author/codeslinger/2011/10/11/talking-trash-an-overview-of-player-gc/</link>
		<comments>http://www.digitalprimates.net/author/codeslinger/2011/10/11/talking-trash-an-overview-of-player-gc/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 17:42:16 +0000</pubDate>
		<dc:creator>codeslinger</dc:creator>
				<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[flashplayer]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[garbage collection]]></category>
		<category><![CDATA[internals]]></category>

		<guid isPermaLink="false">http://www.digitalprimates.net/?p=877</guid>
		<description><![CDATA[Okay, so, I have been a little behind schedule actually posting content. Here is my first attempt at reconcilliation. These are the slides from my garbage collection talk at flash and the city this year. They go into moderate depth &#8230; <a href="http://www.digitalprimates.net/author/codeslinger/2011/10/11/talking-trash-an-overview-of-player-gc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[Okay, so, I have been a little behind schedule actually posting content. Here is my first attempt at reconcilliation.

These are the slides from my garbage collection talk at <a title="Flash and the City" href="http://fatc.co/" target="_blank">flash and the city</a> this year. They go into moderate depth about the internals of garbage collection on the Flash Player and AIR along with some speculation about where things may be going. The speculation is based off of commits happening on the <a title="Tamarin Project" href="http://www.mozilla.org/projects/tamarin/" target="_blank">tamarin project</a> from our friends at Adobe.

<iframe src="http://www.slideshare.net/slideshow/embed_code/9647402" width="450" height="375" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/>

&nbsp;

Cheers,

Labriola

&nbsp;

&nbsp;]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/codeslinger/2011/10/11/talking-trash-an-overview-of-player-gc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Making a custom datagrid scrollbar? I hope the width=16&#8230;</title>
		<link>http://www.digitalprimates.net/author/strict-inequality/2011/02/02/making-a-custom-datagrid-scrollbar-i-hope-the-width16/</link>
		<comments>http://www.digitalprimates.net/author/strict-inequality/2011/02/02/making-a-custom-datagrid-scrollbar-i-hope-the-width16/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 22:29:16 +0000</pubDate>
		<dc:creator>strict-inequality</dc:creator>
				<category><![CDATA[flex-actionscript]]></category>

		<guid isPermaLink="false">http://www.digitalprimates.net/strict-inequality/?p=55</guid>
		<description><![CDATA[Flex has a lot of great facilities for styling and skinning, including custom scrollbars. Unfortunately, I&#8217;ve discovered that Flex really wants your vertical scrollbars to be 16 pixels wide. When it isn&#8217;t, Flex can make some strange layout decisions when &#8230; <a href="http://www.digitalprimates.net/author/strict-inequality/2011/02/02/making-a-custom-datagrid-scrollbar-i-hope-the-width16/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[Flex has a lot of great facilities for styling and skinning, including custom scrollbars. Unfortunately, I&#8217;ve discovered that Flex really wants your vertical scrollbars to be 16 pixels wide. When it isn&#8217;t, Flex can make some strange layout decisions when first putting it on screen.

<span id="more-680"></span>

for example, check out this (very fancy) datagrid:

<a href="http://www.digitalprimates.net/wp-content/uploads/2011/02/start.png"><img class="alignnone size-full wp-image-56" title="start" src="http://www.digitalprimates.net/wp-content/uploads/2011/02/start.png" alt="" width="499" height="196" /></a>

I made an 8-pixel wide vertical scrollbar, complete with a lovely red and purple coloring, and used it in my datagrid. Obviously, there&#8217;s a couple things wrong. First, there&#8217;s an ugly white gap between my content and my fancy scrollbar. Second, it looks like the content in my 2nd column has a different left padding than the content in my 1st column. Finally, the header area above the scrollbar didn&#8217;t render correctly.

To see what kind of scrolling behavior it had, I clicked on my &#8220;down arrow&#8221;:

<a href="http://www.digitalprimates.net/wp-content/uploads/2011/02/scroll_down.png"><img class="alignnone size-full wp-image-57" title="scroll_down" src="http://www.digitalprimates.net/wp-content/uploads/2011/02/scroll_down.png" alt="" width="499" height="196" /></a>

A couple things sorted themselves out: the 8-pixel white gap is gone, the header looks right, and the content in the last row (Roger McBob) looks proper. As a final test, I sorted the 2nd column and got this:

<a href="http://www.digitalprimates.net/wp-content/uploads/2011/02/sorted.png"><img class="alignnone size-full wp-image-58" title="sorted" src="http://www.digitalprimates.net/wp-content/uploads/2011/02/sorted.png" alt="" width="499" height="196" /></a>

Now all the content looks properly placed. So what the heck is going on here?

This bad behavior can be traced back to ScrollControlBase.as, in setScrollBarProperties() and createVScrollBar().

setScrollBarProperties() is going to be invoked from DataGrid&#8217;s updateDisplayList(). What we&#8217;re really interested in is whether the content area (for the first and last names) has changed size, which is tracked in the class variable scrollAreaChanged. If that scroll area has changed, then setScrollBarProperties() is going to call updateDisplayList().

What&#8217;s that? Aren&#8217;t we already in a call to updateDisplayList(), and isn&#8217;t that call going to re-execute DataGrid.updateDisplayList() and get us right back in here?

Yes. Yes it will.

The other thing that setScrollBarProperties() is doing is deciding whether or not it needs to create or destroy scrollbars. For the situation I&#8217;ve created, it will need to create a vertical scrollbar. And it does so with a call to createVScrollBar(). That new scrollbar, before its measure() can get called, is going to report a width of 16, which is the default. And that value will be used to determine not only the overall content area (c.f. that ugly white gap), but also how the content therein is placed (c.f. the 2nd column content being off a few pixels). It&#8217;s going to do all this before we can actually measure the scrollbar, even when we re-enter the method. It&#8217;s not until we start interacting with the control (scrolling, sorting) that we get back into setScrollBarProperties() after the scrollbar has finally been measured. As we can see, it then starts laying out properly.

It&#8217;s great that the framework handles getting us back into that method, but I can&#8217;t help thinking that it would be better served through an invalidation cycle, rather than a recursive call. If that happened, we&#8217;d go through a proper measure cycle and the content area would be sized correctly without having to touch the control.

Funnily enough, in createVScrollBar() (I&#8217;m looking at the Flex SDK 3.5 here), there&#8217;s this code:
<p style="padding-left: 30px;">//need verticalScrollBar.validateNow()?</p>
Given the way the code is written now, I&#8217;d say the answer is yes. That would force a measure and our datagrid would render correctly the first time. Maybe that should have been explored more before simply commenting it out.]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/strict-inequality/2011/02/02/making-a-custom-datagrid-scrollbar-i-hope-the-width16/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSFL: fl.addEventListener() &amp; fl.removeEventListener()</title>
		<link>http://www.digitalprimates.net/author/excessive-recursion/2010/11/02/jsfl-fl-addeventlistener-fl-removeeventlistener/</link>
		<comments>http://www.digitalprimates.net/author/excessive-recursion/2010/11/02/jsfl-fl-addeventlistener-fl-removeeventlistener/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 06:38:35 +0000</pubDate>
		<dc:creator>excessive-recursion</dc:creator>
				<category><![CDATA[Adobe Flash CS]]></category>
		<category><![CDATA[JSFL]]></category>

		<guid isPermaLink="false">http://www.digitalprimates.net/excessive-recursion/?p=35</guid>
		<description><![CDATA[I&#8217;ve been experimenting with the Flash CS5 JSFL API lately and ran across these handy methods adding and removing event listeners to the fl object. However, I discovered that the functionality has changed from what the documentation states. After digging &#8230; <a href="http://www.digitalprimates.net/author/excessive-recursion/2010/11/02/jsfl-fl-addeventlistener-fl-removeeventlistener/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[I&#8217;ve been experimenting with the Flash CS5 JSFL API lately and ran across these handy methods adding and removing event listeners to the fl object. However, I discovered that the functionality has changed from what the documentation states. After digging around the internet for some answers with no luck, I finally contacted Adobe about it and sure enough here is what they say. 

<blockquote>fl.addEventListener now returns an eventID (valid across FLA files for that Flash session) when you add an event listener.  When you remove the event listener, you have to specify the event type and the event id.</blockquote>

Example for adding:
<code>var evtID = fl.addEventListener("documentChanged", docChangedHandler);</code>

Example for removing:
<code>fl.removeEventListener("documentChanged", evtID);</code>

This affects Flash CS4 &#038; Flash CS5. Hopefully this clears things up for people and hopefully the documentation will be updated soon. After experimenting with it while attempting to prevent duplicate event listeners from being added when working with a windowswf that has been opened and closed repeatedly, now you can derive a way to persist the id&#8217;s and keep your panel from adding duplicate listeners. Pretty handy I must say.]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/excessive-recursion/2010/11/02/jsfl-fl-addeventlistener-fl-removeeventlistener/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lots of new prereleases from adobe</title>
		<link>http://www.digitalprimates.net/author/tapper/2010/10/25/lots-of-new-prereleases-from-adobe/</link>
		<comments>http://www.digitalprimates.net/author/tapper/2010/10/25/lots-of-new-prereleases-from-adobe/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 15:40:30 +0000</pubDate>
		<dc:creator>tapper</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[flash flex]]></category>

		<guid isPermaLink="false">http://digitalprimates.net/notes/?p=287</guid>
		<description><![CDATA[Late last night adobe released several new betas on the labs.adobe.com site, including: • 64 bit Flash Player (Code Named “Square”) • Flex 4.5 SDK (Code Named “Hero”) • Flash Builder Next (Code Named “Burrito”) • Flash Catalyst Next (Coe &#8230; <a href="http://www.digitalprimates.net/author/tapper/2010/10/25/lots-of-new-prereleases-from-adobe/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[Late last night adobe released several new betas on the labs.adobe.com site, including:

•	64 bit Flash Player (Code Named “Square”)
•	Flex 4.5 SDK (Code Named “Hero”)
•	Flash Builder Next (Code Named “Burrito”)
•	Flash Catalyst Next (Coe Named “Panini”)

Square is obviously very interesting, as more and more end users now have 64 bit machines, it is great that the flash player will now be able to leverage the full power of the underlying operating system.  It seems that 64 bit players are now available for Windows, Mac and Linux.

Hero is another great release, with Adobe continuing to move the flex sdk forward.  In this release, many of the components which were not migrated to the spark architecture in the 4.0 release have now been completed, including the DataGrid, Form, and Image components.  Even more interesting is the rework done to make to make Flex applications run well on mobile devices.  Having done a few AIR for Android applications using AS3 without the flex framework, I look forward the increased productivity I can realize by leveraging flex on these devices as well.

Burrito and Panini are both improved tools to allow developers and designers increased productivity with the new SDK.  In addition to supporting the latest SDK, Burrito also includes a workflow to ease development of mobile applications, a series of coding improvements, such as the introduction of templates, metadata code hinting and more.
All told, these new releases promise to push the flash platform forward, and increase the world of possibilities for those of us who develop for the platform.


]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/tapper/2010/10/25/lots-of-new-prereleases-from-adobe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Catching up</title>
		<link>http://www.digitalprimates.net/author/codeslinger/2010/09/23/catching-up/</link>
		<comments>http://www.digitalprimates.net/author/codeslinger/2010/09/23/catching-up/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 19:23:02 +0000</pubDate>
		<dc:creator>codeslinger</dc:creator>
				<category><![CDATA[360Flex]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://173.236.48.58/~digit329/codeslinger/?p=151</guid>
		<description><![CDATA[360&#124;Flex is officially over and my slides are finally available. It was another great conference but I am officially wiped out. Three full days of content and wonderfully geeky discussion have left me looking forward to the weekend. For any &#8230; <a href="http://www.digitalprimates.net/author/codeslinger/2010/09/23/catching-up/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
360|Flex is officially over and my slides are finally available. It was another great conference but I am officially wiped out. Three full days of content and wonderfully geeky discussion have left me looking forward to the weekend.
</p><p>
For any who asked for my slides, they are included below. Thanks so much for the great feedback and being a wonderful audience. I really enjoy doing these deep-dive style talks and so long as 360|Flex keeps inviting me back and all of you keep attending, I promise to try to keep them fresh and interesting.
</p>
<div style="width:425px" id="__ss_5272556"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/michael.labriola/flex-4-components-from-the-firehose" title="Flex 4 components from the firehose">Flex 4 components from the firehose</a></strong><object id="__sse5272556" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flex4componentsfromthefirehose-100923183141-phpapp02&#038;stripped_title=flex-4-components-from-the-firehose&#038;userName=michael.labriola" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5272556" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flex4componentsfromthefirehose-100923183141-phpapp02&#038;stripped_title=flex-4-components-from-the-firehose&#038;userName=michael.labriola" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/michael.labriola">michael.labriola</a>.</div></div>
<p>
P.S. If you didn&#8217;t get a chance, check out my featured opening over at <a href="http://www.weheartdoug.org/">http://www.weheartdoug.org</a> for Nate&#8217;s masterful prank.
</p>
<p>
Cheers,</br>
Labriola
</p>]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/codeslinger/2010/09/23/catching-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What&#8217;s under your skin</title>
		<link>http://www.digitalprimates.net/author/tapper/2010/09/21/whats-under-your-skin/</link>
		<comments>http://www.digitalprimates.net/author/tapper/2010/09/21/whats-under-your-skin/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 13:52:42 +0000</pubDate>
		<dc:creator>tapper</dc:creator>
				<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashplayer]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[fp10]]></category>
		<category><![CDATA[skins]]></category>
		<category><![CDATA[Speaking Conferences]]></category>

		<guid isPermaLink="false">http://173.236.48.58/~digit329/notes/?p=162</guid>
		<description><![CDATA[At 360&#124;Flex DC yesterday, I presented my &#8220;Whats under your skin&#8221; presentation, all about architecting components with skins and layouts. I had a great audience, who was very engaged and asked lots of pertinent questions. For anyone interested, here are &#8230; <a href="http://www.digitalprimates.net/author/tapper/2010/09/21/whats-under-your-skin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[At 360|Flex DC yesterday, I presented my &#8220;Whats under your skin&#8221; presentation, all about architecting components with skins and layouts.  I had a great audience, who was very engaged and asked lots of pertinent questions.  
<p>
For anyone interested, here are the slides.  The code for the ShoppingList component can be found below from the download link.  The code for the Clocks are proprietary, and can not be shared.  Sorry.

<object height="378" width="490">
	<param name="movie" value="http://slidesix.com/viewer/SlideSixViewer.swf?alias=Whats-Under-Your-Skin-aUAWb"/>
	<param name="menu" value="false"/>
	<param name="scale" value="noScale"/>
	<param name="allowFullScreen" value="true"/>
	<param name="allowScriptAccess" value="always" />
	<embed src="http://slidesix.com/viewer/SlideSixViewer.swf?alias=Whats-Under-Your-Skin-aUAWb" allowscriptaccess="always" allowFullScreen="true" height="378" width="490" type="application/x-shockwave-flash"  FlashVars="gig_lt=1285091453188&#038;gig_pt=1285091459552&#038;gig_g=2"/>
 <param name="FlashVars" value="gig_lt=1285091453188&#038;gig_pt=1285091459552&#038;gig_g=2" /></object>

<a href='http://173.236.48.58/~digit329/notes/wp-content/uploads/2010/10/FlexGrocer.fxp'>Download</a>]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/tapper/2010/09/21/whats-under-your-skin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wanted: Technical Writers with Free Time and an Altruistic Spirit</title>
		<link>http://www.digitalprimates.net/author/codeslinger/2010/07/08/wanted-technical-writers-with-free-time-and-an-altruistic-spirit/</link>
		<comments>http://www.digitalprimates.net/author/codeslinger/2010/07/08/wanted-technical-writers-with-free-time-and-an-altruistic-spirit/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 13:07:00 +0000</pubDate>
		<dc:creator>codeslinger</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[FlexUnit]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://test.digitalprimates.net/2010/07/08/wanted-technical-writers-with-free-time-and-an-altruistic-spirit/</guid>
		<description><![CDATA[As many of you know, I am the project lead for FlexUnit 4.x. The technical side of the project is in great shape with new features, releases and tests forthcoming, however, the place we are really lagging is good documentation. &#8230; <a href="http://www.digitalprimates.net/author/codeslinger/2010/07/08/wanted-technical-writers-with-free-time-and-an-altruistic-spirit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
As many of you know, I am the project lead for FlexUnit 4.x. The technical side of the project is in great shape with new features, releases and tests forthcoming, however, the place we are really lagging is good documentation. 
</p>
<p>
Right now the FlexUnit team is quite small and 120% of our time is occupied with development and user support. Unfortunately this means that the best engineered plans for good documentation seem to get farther behind as the days go on.
</p>
<p>
We are looking for a few people who would be willing to own large chunks of the documentation. We would arrange conference calls as needed with the developers of key sections to talk through approach, technical details and future plans. The goal would be to ensure you have a full understanding and access to anyone you need when writing. Ultimately, it would also give you a few things. 
</p>
<p>
First, you would have unlimited access to learn FlexUnit at a very, very deep level. Second, you could help create a volume of work (I am hoping we can produce both wiki content and eventually a comprehensive PDF book) which will continue to be attributed to you. Third, that attribution plus future recommendations from myself and others on the team and in this industry are guaranteed (and very helpful for future interviews). 
</p>
<p>
Anyone who is seriously interested should leave a comment on this post and I will reach out to you immediately.
</p>
<p>
If you want to take a look at our current efforts, head over to <a href="http://docs.flexunit.org/" target="_blank">docs.flexunit.org</a>
</p>
<p>
Thanks,<br/>
Labriola</br/>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/codeslinger/2010/07/08/wanted-technical-writers-with-free-time-and-an-altruistic-spirit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FlexUnit 4.1 Beta 1 Now Available</title>
		<link>http://www.digitalprimates.net/author/codeslinger/2010/06/07/flexunit-41-beta-1-now-available/</link>
		<comments>http://www.digitalprimates.net/author/codeslinger/2010/06/07/flexunit-41-beta-1-now-available/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 13:06:00 +0000</pubDate>
		<dc:creator>codeslinger</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[FlexUnit]]></category>

		<guid isPermaLink="false">http://test.digitalprimates.net/2010/06/07/flexunit-41-beta-1-now-available/</guid>
		<description><![CDATA[For months now the core FlexUnit team and contributors have been working diligently to move the next release of FlexUnit forward. The 4.0 release was a success but we always knew there were many optimization and enhancement still to come. &#8230; <a href="http://www.digitalprimates.net/author/codeslinger/2010/06/07/flexunit-41-beta-1-now-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[For months now the core FlexUnit team and contributors have been working diligently to move the next release of FlexUnit forward. The 4.0 release was a success but we always knew there were many optimization and enhancement still to come. Today, we are happy to announce some of those are available as the 4.1 public beta begins.

You can download the latest bits from the <a href="http://www.flexunit.org/?page_id=14" target="_blank">flexunit.org download site</a>.

Here are a few feature descriptions and bullet points of some of the new features in the FlexUnit 4.1 world.
<h2>Parameterized Testing</h2>
There are times when you need to repeat a test across a series of data points. Imagine a class that does a complex calculation based on input values. It is likely that you would want to test hundreds or thousands of different input values, checking each of their expected outputs to feel comfortable that this class was behaving properly. Or, perhaps you have a whole series of components which implement an interface and you wish to verify that setting the &#8216;x&#8217; property on each of those objects dispatches and expected event or updates a given property. These are both cases where Parameterized testing can simplify your life.
<span id="more-361"></span>
Parameterized testing in FlexUnit works by allowing you to specify arguments to be passed to a constructor (we call it JUnit style), or arguments which will be passed to a method (TestNG Style). Here is a quick sample of the approach:
<h3>Constructor (JUnit Style):</h3>
<code> [Parameters]
public static function data2():Array {
return [ [ 3, 6 ], [ 4, 8 ], [ 5, 10 ], [ 6, 12 ] ];
}</code>

<code>private var _input:int;
private var _expected:int;</code>

<code>public function TestParameterized( param1:int, param2:int ) {
_input = param1;
_expected = param2;
}</code>

<code>[Test]
public function doubleTest():void {
assertEquals(_expected, _input*2);
}
</code>
<h3>Method (TestNG Style):</h3>
<code> public static function dataThree():Array {
return [ [ 0, 1, 1 ], [ 1, 2, 3 ], [ 2, 4, 6 ] ];
}</code>

<code>[Test(dataProvider="dataThree")]
public function addTwoValuesTest( value1:int, value2:int, result:int ):void {
  assertEquals( value1 + value2, result );
}
</code>

Parameters are defined by static properties containing arrays of arrays. The framework iterates through the array, calling your methods with the parameters of each inner array. Parameterized testing can be combined with the asynchronous testing for very complex testing.

At first glance, those of you familiar with theories might see a lot of similarities to parameterized testing; they also allow a developer to create methods and a constructor that accept parameters. A theory is different in how the data is defined and in the way a test fails. A theory is akin to a mathematical theory wherein any failure means the whole theory is bad. Further, theories are often reversible. For instance, a valid theory might entail testing a math class by first multiplying two numbers and then dividing the product by the first number. If your code is valid, you should get the second number back. Testing this across a potentially infinite number of values is the real of a theory.

Whereas theories see all of the datapoints as input to a single test, which passes or fails as a whole, parameterized testing expands your set of parameters to individual tests allowing you to understand which cases fail and succeed individually. Parameterized tests are more useful in cases where you have a fixed data set with known specific values which represent a valid outcome.
<h2>External Data for Parameterized Testing and Theories</h2>
Executing tests across large data sets necessarily involves maintaining that data. FlexUnit 4.1 allows the data for Theories and Parameterized tests to be loaded from an external source.

<code>
public static var dataRetriever1:IExternalDependencyLoader = new ParamDataHelper( "PurelyFakeExample.xml" );
[Parameters(loader="dataRetriever1")]
public static var someData:Array;
</code>

The IExternalDependencyLoader interface works with the Theory and Parameterized test runners to facilitate asynchronous loading of data points before testing begins.


<h2>Rules Implementation</h2>
When creating large suites of unit tests, you could find yourself duplicating complex setup code many times. Rules offer the ability to factor this code into a separate class and specify logic that will be invoked before or after each test method call, allowing you to alter how a method is called, perform additional setup or even examine and change the result of a test runner.

<code> [Rule]
public var rule1:IMethodRule = new SomeRule();
[Test]
public function test1():void {
}
</code>

This feature can be used to create new types of test runners through composition instead of inheritance, allowing more flexibility, less code to maintain and the ability to reuse the rule across many types of runners. The first application of this technology was the auto-creation and verification of Mocks for test cases, however, the next application is a Rule to inject dependencies into cases.
<h2>Directory Scanning and Test Loading</h2>
Using the FlexUnit Ant tasks, you can point FlexUnit at a directory, which it will recursively scan for tests, build a temporary suite and execute on your behalf, removing the need to maintain static lists of tests in many cases.

<code>&lt;flexunit workingDir=&quot;&#36;{bin.loc}&quot; toDir=&quot;&#36;{report.loc}&quot; <br/>
&nbsp;haltonfailure=&quot;false&quot; verbose=&quot;true&quot; localTrusted=&quot;true&quot;&gt; <br/>
&nbsp;&nbsp;&lt;testSource dir=&quot;&#36;{main.src.loc}&quot; /&gt; <br/>
&nbsp;&nbsp;&lt;testSource dir=&quot;&#36;{test.src.loc}&quot;&gt; <br/>
&nbsp;&nbsp;&nbsp;&lt;include name=&quot;**/*Test.as&quot; /&gt; <br/>
&nbsp;&nbsp;&lt;/testSource&gt; <br/>
&nbsp;&lt;library dir=&quot;${lib.loc}&quot; /&gt;<br/>
&lt;/flexunit&gt;</code>
<h2>Performance Improvements</h2>
FlexUnit 4.1 now executes FlexUnit 4.x style metadata tests approximately 60% faster than before. New logic that directly monitors the progress of tests throughout the Flash Player frame allows the framework to better utilize the available time, resulting in an additional significant performance boost. Collectively these improvements can halve the execution time on very large suites over previous versions.
<h2>UIImpersonator for AS or Flex</h2>
Flex developers have had the ability to use the UIImpersonator classes to allow components to interact with the display list since version 4.0. Version 4.1 extends that coverage and allows ActionScript only projects the same access. A new property on FlexUnitCore allows developers to indicate the visual display root of the application, thereby allowing this access.

<code> var core:FlexUnitCore = new FlexUnitCore();
core.visualDisplayRoot = this;
</code>
<h2>Asynchronous Functionality now Available in Parameterized Testing and Theories</h2>
The ability to test asynchronously is imperative in Flash, where operations are often broken across frames. FlexUnit Asynchronous methods are now available in Theories and Parameterized Tests.
<h2>Package level assertions</h2>
You may have noticed that throughout these examples, we have simply said

<span style="font-family: monospace;">assertTrue()</span> instead of <span style="font-family: monospace;">Assert.assertTrue()</span>

Package level assertions now exist for all assertion methods, minimizing typing and porting from previous versions of FlexUnit or Fluint.
<h2>Timing information during test run</h2>
Timing information is gathered internal to the framework during test run, allowing for more accurate measurements of test execution time.


Now, go download the latest bits from the <a href="http://www.flexunit.org/?page_id=14" target="_blank">flexunit.org download site</a> and give us some feedback.]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/codeslinger/2010/06/07/flexunit-41-beta-1-now-available/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>VectorCollection</title>
		<link>http://www.digitalprimates.net/author/codeslinger/2010/05/18/vectorcollection/</link>
		<comments>http://www.digitalprimates.net/author/codeslinger/2010/05/18/vectorcollection/#comments</comments>
		<pubDate>Tue, 18 May 2010 09:05:00 +0000</pubDate>
		<dc:creator>codeslinger</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>

		<guid isPermaLink="false">http://test.digitalprimates.net/2010/05/18/vectorcollection/</guid>
		<description><![CDATA[First, let me say I am sorry. A year or so ago, I wrote these VectorCollection classes. They are not spectacular works of art, they are very basic implementations required to use Vector inside of Flex components which are looking &#8230; <a href="http://www.digitalprimates.net/author/codeslinger/2010/05/18/vectorcollection/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[First, let me say I am sorry. A year or so ago, I wrote these VectorCollection classes. They are not spectacular works of art, they are very basic implementations required to use Vector inside of Flex components which are looking for IList and ICollectionView for their dataProviders.

Vector has some performance advantages in some cases (for more details, <a href="http://blogs.digitalprimates.net/codeSlinger/index.cfm/2009/5/20/An-Which-Array-but-Loose-the-code">take a look here</a>.  ) but overall, the big advantage to me is type safety. I know what should be in the Vector and flash knows if I mess that up.

On the whole, these are simple implementations that don&#8217;t solve every problem I would love to solve if I had the Flash Player source and some time, but they will allow you to use Vectors more directly in Flex.  So, if you find them useful, then enjoy.

<code>private var source:Vector.&lt;uint&gt;;
source = new Vector.&lt;uint&gt;;</code>

<code>private var vc:VectorListCollection;
vc = new VectorListCollection( source );</code>

<code>var sort:Sort = new Sort();
var field:SortField = new SortField( null, false, false, true );
sort.fields = [field];
vc.sort = sort;
vc.refresh();</code>

<a href='http://173.236.48.58/~digit329/codeslinger/wp-content/uploads/2010/05/VectorImplementations.zip'>File Available Here</a>

Cheers,
Mike]]></content:encoded>
			<wfw:commentRss>http://www.digitalprimates.net/author/codeslinger/2010/05/18/vectorcollection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

