<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>User Interface at Workday Inc.</title>
	<atom:link href="http://workdayui.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://workdayui.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 07 Jun 2011 15:58:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='workdayui.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>User Interface at Workday Inc.</title>
		<link>http://workdayui.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://workdayui.wordpress.com/osd.xml" title="User Interface at Workday Inc." />
	<atom:link rel='hub' href='http://workdayui.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ActionScript and function calls</title>
		<link>http://workdayui.wordpress.com/2011/04/11/actionscript-and-function-calls/</link>
		<comments>http://workdayui.wordpress.com/2011/04/11/actionscript-and-function-calls/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 20:05:25 +0000</pubDate>
		<dc:creator>viswaperiyanan</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=67</guid>
		<description><![CDATA[Recently I was investigating some performance issues that showed up after we migrated our application to flex 4 from 3.6.  After few attempts, narrowed it down to our rather large style sheet with a lot of universal selectors. When I went through Flex source code that performed the selection of appropriate styles to apply for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=67&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I was investigating some performance issues that showed up after we migrated our application to flex 4 from 3.6.  After few attempts, narrowed it down to our rather large style sheet with a lot of universal selectors. When I went through Flex source code that performed the selection of appropriate styles to apply for each component  on screen (matchStyleDeclarations in StyleProtoChain), I found nothing wrong.</p>
<p>The screen I was looking at had about 1500 components (several grids). For each of the 1500 UIComponent, the CSSDeclarations were examined for potential matches. Our style sheet had 400 of those . The selection process is straight forward: Examine all 400 CSSDeclerations to find matches. Several other objects &#8211; CSSCondition and CSSSelector are involved in finding matches. According to the profiler the system was spending close to 2 seconds to find matching styles. This ended up being a double loop. Outerloop ran 1500 times and inner loop 400 times. The functions calls are several levels deep and across multiple objects.</p>
<p>It turns out that function calls are really costly in Action Script and it becomes very noticeable when function calls are being made in a loop. Here is an example:</p>
<p style="padding-left:30px;"><span style="color:#0000ff;">var t1:int = getTimer();</span><br />
<span style="color:#0000ff;"> for (var i:int =0; i&lt;1500; i++) {</span><br />
<span style="color:#0000ff;"> for (var j:int =0; j&lt;1500; j++) {</span><br />
<span style="color:#0000ff;"> var k:Number = j+k;</span><br />
<span style="color:#0000ff;"> var k1:Number = j+k;</span><br />
<span style="color:#0000ff;"> var k2:Number = j+k;</span><br />
<span style="color:#0000ff;"> var k3:Number = j+k;</span><br />
<span style="color:#0000ff;"> }</span><br />
<span style="color:#0000ff;"> }</span><br />
<span style="color:#0000ff;"> var t2:int = getTimer();</span></p>
<p>Takes  <strong>35 milliseconds </strong>to execute &#8211; fair enough. Now let us change the code to do those additions in a function:</p>
<p style="padding-left:30px;"><span style="color:#0000ff;">private function add(n1:int, n2:int):int{</span><br />
<span style="color:#0000ff;"> return n1 + n2;</span><br />
<span style="color:#0000ff;"> }</span></p>
<p style="padding-left:30px;">and modify code to use the function:</p>
<p style="padding-left:30px;"><span style="color:#0000ff;">var t1:int = getTimer();</span><br />
<span style="color:#0000ff;"> for (var i:int =0; i&lt;1500; i++) {</span><br />
<span style="color:#0000ff;"> for (var j:int =0; j&lt;1500; j++) {</span><br />
<span style="color:#0000ff;"> var k:int = add(j,k);</span><br />
<span style="color:#0000ff;"> var k1:int = add(j, k);</span><br />
<span style="color:#0000ff;"> var k2:int = add(j, k);</span><br />
<span style="color:#0000ff;"> var k3:int = add(j,k);</span><br />
<span style="color:#0000ff;"> }</span><br />
<span style="color:#0000ff;"> }</span><br />
<span style="color:#0000ff;"> var t2:int = getTimer();</span></p>
<p style="padding-left:30px;"><span style="color:#000000;">Takes <strong>1.08 seconds </strong>to execute &#8211; way  too long!</span></p>
<h3><span style="text-decoration:underline;"><span style="color:#33cccc;">Solution</span></span></h3>
<p>Given this finding &#8211; went to back to StyleProtoChain and modified the code:</p>
<ol>
<li>Eliminated all the getter methods by making variables public in CSSSelector, CSSDeclerationd CSSCondition</li>
<li>Inlined all possible functions directly into matchStyleDeclarations (and named the new function fastMatchStyleDeclarations).</li>
</ol>
<p>The fastMatchStyleDeclarations is large and not so nice to read, but it eliminated most of the performance issues with this loop. We are also working on reducing the number of universal selectors in our CSS file.</p>
<p>Just for curiosity I ran a similar program in Java:</p>
<p style="padding-left:30px;"><span style="color:#0000ff;">private int add(int i, int j) {</span><br />
<span style="color:#0000ff;"> return i+j;</span><br />
<span style="color:#0000ff;"> }</span></p>
<p style="padding-left:30px;">and</p>
<p style="padding-left:30px;"><span style="color:#0000ff;">long l1 = System.currentTimeMillis();</span><br />
<span style="color:#0000ff;"> for (int i=0; i&lt;1500; i++) {</span><br />
<span style="color:#0000ff;"> for (int j=0; j&lt;1500; j++) {</span><br />
<span style="color:#0000ff;"> int k = add(i, j);</span><br />
<span style="color:#0000ff;"> int k1 = add(i, j); </span><br />
<span style="color:#0000ff;"> int k2 = add (i, j);</span><br />
<span style="color:#0000ff;"> int k3 = add(i, j);</span><br />
<span style="color:#0000ff;"> }</span><br />
<span style="color:#0000ff;"> }</span><br />
<span style="color:#0000ff;">long l2 = System.currentTimeMillis();</span></p>
<p>Takes <strong>8 milliseconds</strong> to execute, the difference is narrowed if we use Objects instead of primitives &#8211; but Java continues to be faster by several orders of magnitude</p>
<p>and here is the <a title="patch" href="https://sites.google.com/site/viswasworkshop/test/styles.zip?attredirects=1&amp;d=1">patch </a>to get around the performance issues when using a large style sheet.</p>
<h3>Update &#8211; 04/14</h3>
<p><a href="http://www.jamesward.com/">James Ward</a> found that he was not getting the same numbers when he ran the test. The numbers above were captured using debug player (on a release build).</p>
<p>Here are the (new) numbers in standard and debug player  (10.2 IE 9):</p>
<table>
<tbody>
<tr>
<td></td>
<td>Release Build</td>
<td>Debug Build</td>
</tr>
<tr>
<td>Standard Player</td>
<td><span style="color:#3366ff;">20</span>/<span style="color:#ff6600;">187</span></td>
<td><span style="color:#3366ff;">18</span>/<span style="color:#ff6600;">190</span></td>
</tr>
<tr>
<td>Debug Player</td>
<td><span style="color:#3366ff;">40</span>/<span style="color:#ff6600;">1300</span></td>
<td><span style="color:#3366ff;">1014</span>/<span style="color:#ff6600;">4140</span></td>
</tr>
</tbody>
</table>
<p>In blue is the time spent executing the loop when running the inline version, the other number in orange is the time spent (in milliseconds) when executing the function variation. So the in-lined version is not 30 times faster, it is just 10 times faster &#8211; very surprised to find that running the program on the standard player makes such a big difference.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=67&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2011/04/11/actionscript-and-function-calls/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c68955463577dd31c21b7955cbd18f4f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viswaperiyanan</media:title>
		</media:content>
	</item>
		<item>
		<title>Memory Leak in Flex 3.2 Lists &amp; Grids</title>
		<link>http://workdayui.wordpress.com/2009/02/05/memory-leak-in-flex-32-lists-grids/</link>
		<comments>http://workdayui.wordpress.com/2009/02/05/memory-leak-in-flex-32-lists-grids/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 08:37:30 +0000</pubDate>
		<dc:creator>Hob</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[memory leak]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[workday]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=28</guid>
		<description><![CDATA[Ok&#8230;so to say that there&#8217;s a memory leak in Lists and Grids is a bit redundant as they all inherit from one class, ListBase, which is where the problem is, but a bit of redundancy can be eye-catching. Anyway&#8230;recently I was tracking down an issue filed by one of our testers, and stumbled across a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=28&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ok&#8230;so to say that there&#8217;s a memory leak in Lists and Grids is a bit redundant as they all inherit from one class, ListBase, which is where the problem is, but a bit of redundancy can be eye-catching.</p>
<p>Anyway&#8230;recently I was tracking down an issue filed by one of our testers, and stumbled across a nasty little memory leak in the 3.2 SDK.  Adobe&#8217;s already corrected the problem in the 3.3 nightlies, but I thought I&#8217;d post my findings here on the chance that anyone else needs the fix in their 3.2 SDK.</p>
<p>The problem is a small class called StageEventProxy.  SystemManager creates an instance of StageEventProxy passing to it your listener whenever one of the following types of events is listened for from SystemManager:</p>
<ul>
<li>MouseEvent.MOUSE_MOVE</li>
<li>MouseEvent.MOUSE_UP</li>
<li>MouseEvent.MOUSE_DOWN</li>
<li>Event.ACTIVATE</li>
<li>Event.DEACTIVATE</li>
</ul>
<p>The problem is that StageEventProxy keeps a hard reference to your listener function.  This means that when garbage collection runs, that listener and the object its attached to will never get marked for garbage collection.</p>
<p>Now, you&#8217;re probably thinking, &#8220;I&#8217;ve never added any of those listeners to SystemManager so I&#8217;m free and clear.  Woot!&#8221;  Unfortunately you&#8217;re not off the hook just yet.  Adobe adds a MOUSE_UP listener to SystemManager in ListBase&#8217;s mouseDownHandler():</p>
<pre class="brush: java;">
systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, true, 0, true);
</pre>
<p>The consequence of this line is that any object that&#8217;s an instance of a sub-class of this class (a quick search through the source code revealed List, DataGrid, AdvancedDataGrid, and TileList) will never be garbage collected once the user has clicked on any of the rows in the list.  Additionally, because all UIComponents keep a hard reference to their parent component, the garbage collector will also neglect to clean up any of your list&#8217;s ancestors in the document hierarchy.</p>
<p>The implications of that for most people are that lists in pop-ups will cause the entirety of your pop-up to never get garbage collected.  Here at Workday its a much larger issue, however.  Our pages are dynamically created based on XML page definitions we get from the server.  These pages are also dynamically unloaded when a new page is received.  As a result of the patch for this fix, we&#8217;ve seen dramatically reduced memory usage over time in our Flex applications.</p>
<p>Here&#8217;s the culprit so you can see what was going on:</p>
<pre class="brush: java;">
////////////////////////////////////////////////////////////////////////////////
//
//  ADOBE SYSTEMS INCORPORATED
//  Copyright 2003-2006 Adobe Systems Incorporated
//  All Rights Reserved.
//
//  NOTICE: Adobe permits you to use, modify, and distribute this file
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////

package mx.managers.systemClasses
{

[ExcludeClass]

import flash.display.Stage;
import flash.events.Event;

/**
 * An object that filters stage
 */
public class StageEventProxy
{
	private var listener:Function;

	public function StageEventProxy(listener:Function)
	{
		this.listener = listener;
	}

	public function stageListener(event:Event):void
	{
		if (event.target is Stage)
			listener(event);
	}

}

}
</pre>
<p>Here&#8217;s the updated version Adobe&#8217;s including in the 3.3 SDK:</p>
<pre class="brush: java;">
////////////////////////////////////////////////////////////////////////////////
//
//  ADOBE SYSTEMS INCORPORATED
//  Copyright 2003-2006 Adobe Systems Incorporated
//  All Rights Reserved.
//
//  NOTICE: Adobe permits you to use, modify, and distribute this file
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////

package mx.managers.systemClasses
{

[ExcludeClass]

import flash.display.Stage;
import flash.events.Event;
import flash.utils.Dictionary;

/**
 * An object that filters stage
 */
public class StageEventProxy
{
	private var weakRef: Dictionary = new Dictionary(true);

	public function StageEventProxy(listener:Function)
	{
		this.weakRef[listener] = 1;
	}

	public function stageListener(event:Event):void
	{
		if (event.target is Stage)
		{
			for (var p:* in weakRef)
			{
				var f:Function = p as Function;
				f(event);
			}
		}
	}

}

}
</pre>
<p>And finally&#8230;Here&#8217;s a patch file you can drop in your Lib folder that will solve the problem: <a href="http://www.spillane.cc/workday/SDK_18268_PATCH.swc"> PATCH FILE</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=28&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2009/02/05/memory-leak-in-flex-32-lists-grids/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40824fbcca82cfecaa7be25cf9d72617?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Hob</media:title>
		</media:content>
	</item>
		<item>
		<title>Dave Interview &amp; Podcasts In General</title>
		<link>http://workdayui.wordpress.com/2008/09/19/dave-interview-podcasts-in-general/</link>
		<comments>http://workdayui.wordpress.com/2008/09/19/dave-interview-podcasts-in-general/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 11:54:44 +0000</pubDate>
		<dc:creator>Tom Ortega II</dc:creator>
				<category><![CDATA[Dave]]></category>
		<category><![CDATA[erp]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[workday]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=23</guid>
		<description><![CDATA[In case you somehow missed it, I wanted to point out an interview with our humble leader, Dave Duffield.  He recently participated in the Bill Kutik Radio Show podcast.  One of the highlights in this great podcast is Dave&#8217;s rundown of his companies and the technology changes that occurred during each. Podcasts are a really [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=23&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In case you somehow missed it, I wanted to point out <a href="http://media.libsyn.com/media/knowledgeinfusion/Radio_Show_014_-_Dave_Duffield.mp3">an interview</a> with our humble leader, Dave Duffield.  He recently participated in the <a title="Bill Kutik Radio Show" href="http://billkutikradioshow.com" target="_self">Bill Kutik Radio Show</a> podcast.  One of the highlights in this great podcast is Dave&#8217;s rundown of his companies and the technology changes that occurred during each.</p>
<p>Podcasts are a really great technology.  The quality of the recordings can be just as good as what you find on the radio, but with the flexibility of the content to be what you care most about.  I&#8217;ll have to admit that I don&#8217;t listen to as many podcasts as I should, but that&#8217;s just because I get too engrossed in them.  Therefore, that means they&#8217;re not an option when coding.  I&#8217;d listen to them on my &#8220;commute&#8221; but since that&#8217;s only 10 minutes long, I don&#8217;t think I&#8217;d get much in that way either.</p>
<p>If you do like podcasts and want to learn a little more about Flex (the technology that powers Workday&#8217;s UI), there&#8217;s a really great podcast put on by two friends of mine: <a href="http://www.jeffryhouser.com/">Jeff Houser</a> and <a title="John Wilker's Blog" href="http://johnwilker.com">John Wilker</a>.  It&#8217;s called <a title="The Flex Show Podcast" href="http://www.theflexshow.com/blog/">The Flex Show</a> and it covers the <a title="Adobe Flex Site" href="http://www.flex.org">Adobe Flex</a> technology world.  I&#8217;ll have to get Khurram and Frank from the Workday UI team to do an interview with them soon, so you can find out some juicy details about our amazing UI.  In the meantime, <a title="The Flex Show Podcast with Charlie" href="http://www.theflexshow.com/blog/index.cfm/2008/8/27/The-Flex-Show-Episode-53-360Flex-San-Jose-08-Day-3">you can listen to a brief interview</a> with Charlie Boyle (the UI team&#8217;s manager).  You can zoom to minute 14 to get to Charlie in that episode.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=23&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2008/09/19/dave-interview-podcasts-in-general/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://media.libsyn.com/media/knowledgeinfusion/Radio_Show_014_-_Dave_Duffield.mp3" length="34605369" type="audio/mpeg" />
	
		<media:content url="http://1.gravatar.com/avatar/d3d7a735c0d6d795bb0c29ed33624d74?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lordbron</media:title>
		</media:content>
	</item>
		<item>
		<title>FlexSpy enhancements</title>
		<link>http://workdayui.wordpress.com/2008/06/03/flexspy-enhancements/</link>
		<comments>http://workdayui.wordpress.com/2008/06/03/flexspy-enhancements/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 18:15:44 +0000</pubDate>
		<dc:creator>Hob</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[workday]]></category>
		<category><![CDATA[Flex FlexSpy development debugging tools]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=20</guid>
		<description><![CDATA[Here at Workday the Flex application we&#8217;re building is extremely complex (like a fine wine) because our components are built dynamically.  As such, debugging visual and styling issues can often be onerous.  One of my favorite tools for aiding in that task is FlexSpy.  It&#8217;s a great tool that lets you view your application&#8217;s object [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=20&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here at Workday the Flex application we&#8217;re building is extremely complex (like a fine wine) because our components are built dynamically.  As such, debugging visual and styling issues can often be onerous.  One of my favorite tools for aiding in that task is <a href="http://code.google.com/p/fxspy/" target="_blank">FlexSpy</a>.  It&#8217;s a great tool that lets you view your application&#8217;s object hierarchy and inspect the properties on each object in that hierarchy.  Its the closest thing I&#8217;ve found in Flex to what Firebug is for Ajax apps.  It even has a &#8220;finder&#8221; similar to Firebug&#8217;s &#8220;Inspect&#8221; functionality.</p>
<p>There are a couple of problems with FlexSpy, however:</p>
<ol>
<li>FlexSpy does not have the ability to use SystemManager as its root.  By default it chooses the current Application as its root, thereby rendering you unable to inspect anything else attached to system manager (like pop-ups).</li>
<li>The &#8220;finder&#8221; mostly works, but doesn&#8217;t always let you drill into the child-most component.  For example, if you&#8217;re trying to get to a component that&#8217;s in a DataGrid cell, the finder will only take you as deep as the grid itself.  From there, you then have to use the tree view to get to the component you&#8217;re looking for.</li>
</ol>
<p>I&#8217;ve added a couple enhancements to FlexSpy to try and tackle these problems and posted them in an <a href="http://code.google.com/p/fxspy/issues/detail?id=3">issue</a> filed on their Google Code page.  The 2 attachments change FlexSpy so it uses SystemManager as its root, and make the finder much more accurate.</p>
<p>I hope that folks will find these changes useful.  If you find any problems with the changes, please feel free to comment here, and I&#8221;ll see if I can figure out what&#8217;s going on.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=20&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2008/06/03/flexspy-enhancements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40824fbcca82cfecaa7be25cf9d72617?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Hob</media:title>
		</media:content>
	</item>
		<item>
		<title>Problems moving within a radio group</title>
		<link>http://workdayui.wordpress.com/2008/05/12/unexpected-keyboard-control-in-flex-radio-buttons/</link>
		<comments>http://workdayui.wordpress.com/2008/05/12/unexpected-keyboard-control-in-flex-radio-buttons/#comments</comments>
		<pubDate>Mon, 12 May 2008 17:41:36 +0000</pubDate>
		<dc:creator>Hob</dc:creator>
				<category><![CDATA[erp]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[workday]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=14</guid>
		<description><![CDATA[I&#8217;ve recently been trying to add better keyboard control to some of our components.  One such component is basically a container with a set of radio buttons.  The radio buttons not only have labels, but also associated fields (TextInputs, ComboBoxes, etc.) that are only applicable when the radio button next to it is selected.  Thus, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=14&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been trying to add better keyboard control to some of our components.  One such component is basically a container with a set of radio buttons.  The radio buttons not only have labels, but also associated fields (TextInputs, ComboBoxes, etc.) that are only applicable when the radio button next to it is selected.  Thus, the radio button and its associated field both get wrapped in a container for alignment.</p>
<p>This particular component also supports the inclusion of a &#8220;None of the above&#8221; radio button.  For that particular item in the radio button list we were using a standard Flex RadioButton as there needs to be no associated field next to it.  The result of one of these instances might have a structure similar to this:</p>
<pre>
<pre class="brush: xml;">
&lt;mx:HBox&gt;
 &lt;mx:RadioButton/&gt;
 &lt;mx:ComboBox/&gt;
&lt;/mx:HBox&gt;
&lt;mx:HBox&gt;
 &lt;mx:RadioButton/&gt;
 &lt;mx:TextInput/&gt;
&lt;/mx:HBox&gt;
&lt;mx:HBox&gt;
 &lt;mx:RadioButton/&gt;
 &lt;mx:CheckBox/&gt;
&lt;/mx:HBox&gt;
&lt;mx:RadioButton label=&quot;None of the above&quot;/&gt;
</pre>
</pre>
<p>The problem I ran into was this: My focus being set on any of the radio buttons in the list, I would start hitting the up arrow.  Once the arrow took me to the radio button physically at the top of the list, it would allow me to move one further, and take me back to the &#8220;None of the above&#8221; radio button.  For some reason it thought that &#8220;None of the above&#8221; was first in the list.</p>
<p>I started digging around and here&#8217;s what I found:  When RadioButtons are assigned a RadioButtonGroup (via their group property), they register themselves with that RadioButtonGroup via  call to the addInstance() method.  The problem is that the registration does not happen as soon as the group is added.  There are actually several possible places where it can happen, including commitProperties() and updateDisplayList().</p>
<p>This means that the order in which RadioButtons are added to their groups&#8217; array of radio buttons is dependent on the flow of the component lifecycle.  The reason &#8220;None of the above&#8221; was at the top of the groups movement list was because it was the only one in the list of radio buttons that wasn&#8217;t also wrapped in another container.  The extra level of nesting for all the other radio buttons meant that they would get their updateDisplayList and commitProperties methods called after the &#8220;None of the above&#8221; button&#8217;s.</p>
<p>I wound up resolving the problem by wrapping the last radio button in the same type of container as all the rest.  Hopefully this helps someone else avoid having to spend a bunch of time on the same problem.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=14&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2008/05/12/unexpected-keyboard-control-in-flex-radio-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40824fbcca82cfecaa7be25cf9d72617?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Hob</media:title>
		</media:content>
	</item>
		<item>
		<title>AutoSizingAdvancedDataGrid that fixes the variableRowHeight issues with mx.controls.AdvancedDataGrid</title>
		<link>http://workdayui.wordpress.com/2008/05/09/autosizingadvanceddatagrid-that-fixes-the-variablerowheight-issues-with-mxcontrolsadvanceddatagrid/</link>
		<comments>http://workdayui.wordpress.com/2008/05/09/autosizingadvanceddatagrid-that-fixes-the-variablerowheight-issues-with-mxcontrolsadvanceddatagrid/#comments</comments>
		<pubDate>Sat, 10 May 2008 01:34:45 +0000</pubDate>
		<dc:creator>khurram</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[workday]]></category>
		<category><![CDATA[AdvancedDataGrid]]></category>
		<category><![CDATA[AutoSizingAdvancedDataGrid]]></category>
		<category><![CDATA[variableRowHeight]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=15</guid>
		<description><![CDATA[When variableRowHeight is set to true on AdvancedDataGrid, (a) mx.controls.AdvancedDataGrid ignores attributes such as rowCount. (b) there is no way to figure out the height of the AdvancedDataGrid instance because we don&#8217;t know how much height we will need to show the rows of data in our dataProvider. We can set the height to maxHeight [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=15&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When variableRowHeight is set to true on AdvancedDataGrid,<br />
(a) mx.controls.AdvancedDataGrid ignores attributes such as rowCount.<br />
(b) there is no way to figure out the height of the AdvancedDataGrid instance because we don&#8217;t know how much height we will need to show the rows of data in our dataProvider.  We can set the height to maxHeight but what of the sum of heights of all rows in our grid is less than the maxHeight, we need our grid to adjust itself to the shorter height but the AdvancedDataGrid does not.</p>
<p>(c) When opening/closing trees in hierarchical data inside the grid, we need the grid to automatically adjust its height.  AdvancedDataGrid does not do that when variableRowHeight == true</p>
<p><a title="Example with Source code" href="http://www.silvafug.org/blogStuff/AutoSizingAdvancedDataGrid/AdvancedDataGridComponent.html" target="_blank"><img style="border:0 none;" src="http://www.silvafug.org/blogStuff/AutoSizingAdvancedDataGrid/screenshot.png" alt="Both grids side-by-side" width="600" height="289" /></a></p>
<p>The AutoSizingAdvancedDataGrid fixes this issues.  It does this by dynamically increasing the height of the array until (a) all the rows in the dataProvider have been displayed or (b) maxHeight has been reached.</p>
<p>Click the image or <a title="Example with Source code" href="http://www.silvafug.org/blogStuff/AutoSizingAdvancedDataGrid/AdvancedDataGridComponent.html" target="_blank">here </a>to see the example app.  You can right-click and view source as well.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=15&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2008/05/09/autosizingadvanceddatagrid-that-fixes-the-variablerowheight-issues-with-mxcontrolsadvanceddatagrid/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8745ccf55de196dd34221b50272c700f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">khurram</media:title>
		</media:content>

		<media:content url="http://www.silvafug.org/blogStuff/AutoSizingAdvancedDataGrid/screenshot.png" medium="image">
			<media:title type="html">Both grids side-by-side</media:title>
		</media:content>
	</item>
		<item>
		<title>HierarchicalCollectionView: Sort/Filter issues</title>
		<link>http://workdayui.wordpress.com/2008/03/26/hierarchicalcollectionview-sortfilter-issues/</link>
		<comments>http://workdayui.wordpress.com/2008/03/26/hierarchicalcollectionview-sortfilter-issues/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 14:00:53 +0000</pubDate>
		<dc:creator>Tom Ortega II</dc:creator>
				<category><![CDATA[ADG]]></category>
		<category><![CDATA[AdvancedDataGrid]]></category>
		<category><![CDATA[Filtering]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HierarchicalCollectionView]]></category>
		<category><![CDATA[Sorting]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/?p=12</guid>
		<description><![CDATA[We&#8217;re working with the AdvancedDataGrid pretty heavily here at Workday. Therefore, we find ourselves using HierarchicalCollectionView by default since ADG wraps HierarchicalData in one. The problems that we&#8217;re encountering is with filtering. I opened up my first Flex Bugbase Jira (woohoo!), so please go vote for it. https://bugs.adobe.com/jira/browse/FLEXDMV-1700 If you set the filterFunction property to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=12&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re working with the AdvancedDataGrid pretty heavily here at Workday.  Therefore, we find ourselves using HierarchicalCollectionView by default since ADG wraps HierarchicalData in one.</p>
<p>The problems that we&#8217;re encountering is with filtering.  I opened up my first Flex Bugbase Jira (woohoo!), so please go vote for it.  <a href="https://bugs.adobe.com/jira/browse/FLEXDMV-1700" title="Tom's First Flex Jira" target="_blank">https://bugs.adobe.com/jira/browse/FLEXDMV-1700</a></p>
<p>If you set the filterFunction property to null in any other collection, that means you&#8217;re done filtering.  Since there&#8217;s no filterFunction, every item should be shown in the collection and any past filter results should be removed.  HierarchicalCollectionView just says, &#8220;Well, if there isn&#8217;t a filterFunction, then we don&#8217;t need to update the data at all.&#8221;  Bummer.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>To see what I mean, check out my test app I submitted with the Jira.  It&#8217;s located <a href="http://www.silvafug.org/blogStuff/HierarchicalCollectionView/ADGFilterFunction.html" title="ADGFilterFunction bug sample app" target="_blank">here </a>and has view source enabled so you can make sure I&#8217;m not crazy!  <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Be sure to vote for sameer&#8217;s Sort bug as well: <a href="https://bugs.adobe.com/jira/browse/FLEXDMV-1594" title="Sorting bug" target="_blank">https://bugs.adobe.com/jira/browse/FLEXDMV-1594</a> It&#8217;s pretty much the same thing only for Sorting instead of filtering.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=12&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2008/03/26/hierarchicalcollectionview-sortfilter-issues/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3d7a735c0d6d795bb0c29ed33624d74?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lordbron</media:title>
		</media:content>
	</item>
		<item>
		<title>Viewing Workday Through a Prism</title>
		<link>http://workdayui.wordpress.com/2007/10/27/viewing-workday-via-a-prism/</link>
		<comments>http://workdayui.wordpress.com/2007/10/27/viewing-workday-via-a-prism/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 12:10:16 +0000</pubDate>
		<dc:creator>Tom Ortega II</dc:creator>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[erp]]></category>
		<category><![CDATA[Prism]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[workday]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/2007/10/27/viewing-workday-via-a-prism/</guid>
		<description><![CDATA[Workday&#8217;s web application is currently built on top of Adobe&#8217;s Flex Framework. Flex let&#8217;s us build really cool widgets, which the application developers then turn into useful applications. Flex is great for developing. The current way to access the application is via a web browser, which is great for some reasons (zero-deployment, lightweight client, etc.) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=10&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Workday&#8217;s web application is currently built on top of Adobe&#8217;s Flex Framework.  Flex let&#8217;s us build really cool widgets, which the application developers then turn into useful applications.  Flex is great for developing.  The current way to access the application is via a web browser, which is great for some reasons (zero-deployment, lightweight client, etc.) and not so great for other reasons (back/forward buttons, tabs in the browser, bookmarking, etc.)</p>
<p>Just because an application is deployed via a web browser doesn&#8217;t make it a &#8220;website&#8221;.  Workday is a tool that our customers will use everyday of their work life.  They should be able to access it like an other application they use at work by double clicking an icon on the desktop, single clicking an icon in the Quick Launch bar, or choosing an item from the Start menu (Yes, this is a Window&#8217;s users view).</p>
<p>Prism offers that functionality.  It does it easily without much complication.  The nice thing about Prism is that it&#8217;s an end-user technology.  You don&#8217;t have to be a developer to convert your favorite web app into a desktop application.  You just need to know a url and you&#8217;re done.  Yes, it&#8217;s currently for Windows only and still pretty slim on features.  However, for Workday, we build plenty of features ourselves into the application and it&#8217;s nice to see it shine on it&#8217;s own.  If you&#8217;re interested in a bit of the Prism story, read <a href="http://blog.mozilla.com/faaborg/2007/10/24/prism/" title="Alex Faaborg's Blog" target="_blank">Alex&#8217;s entry</a> (he&#8217;s working on User Experience at Mozilla).</p>
<p>Below is a screenshot of my desktop.  You can see the Workday app running in a tab inside Firefox.  This is how I normally access the application.  Moving forward though, I&#8217;ll be using the &#8220;Workday Dev&#8221; application instead.  It&#8217;s the window with the red box outline around it (the red box is my doing to call out the window, Prism doen&#8217;t do that).  You can also see 2 red circles highlighting the Desktop icon and Quick Launch icon.</p>
<p>If you use Workday and want it to access it like a desktop application, then go to the <a href="http://labs.mozilla.com/2007/10/prism/" title="Prism page at Mozilla Labs" target="_blank">Mozilla Labs</a> site and give Prism a twirl. Remember, it&#8217;s currently Windows only, but Mac and Linux support should be out soon.</p>
<p><a href="http://workdayui.files.wordpress.com/2007/10/prism_screenshot.png" title="Workday Desktop Application via Prism"><img src="http://workdayui.files.wordpress.com/2007/10/prism_screenshot.png?w=460" alt="Workday Desktop Application via Prism" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=10&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2007/10/27/viewing-workday-via-a-prism/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3d7a735c0d6d795bb0c29ed33624d74?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lordbron</media:title>
		</media:content>

		<media:content url="http://workdayui.files.wordpress.com/2007/10/prism_screenshot.png" medium="image">
			<media:title type="html">Workday Desktop Application via Prism</media:title>
		</media:content>
	</item>
		<item>
		<title>On Flex Compiler Warnings</title>
		<link>http://workdayui.wordpress.com/2007/08/29/on-flex-compiler-warnings/</link>
		<comments>http://workdayui.wordpress.com/2007/08/29/on-flex-compiler-warnings/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 19:40:27 +0000</pubDate>
		<dc:creator>khurram</dc:creator>
				<category><![CDATA[1084]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex warnings]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/2007/08/29/on-flex-compiler-warnings/</guid>
		<description><![CDATA[Some of the Flex compiler warnings are more informational in nature i.e. they are not really warnings just information pointers, sort of like “are you sure this is what you want, if yes then ignore”.  I discuss two of them that directly affect many apps below –  1.  One such so-called warning comes up when [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=8&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">Some of the Flex compiler warnings are more informational in nature i.e. they  are not really warnings just information pointers, sort of like “are you sure  this is what you want, if yes then ignore”.  I discuss two of them that directly affect many apps below –  </span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;"> 1.  One such so-called  warning comes up when you do not specify an explicit scope for your variable or  method.  For example &#8211;  </span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;"> Declaring a function as  follows will give a compiler warning in flex – </span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">public class Foo  {</span></font></p>
<p class="MsoNormal" style="margin-left:0.5in;"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">function  bar():void {</span></font></p>
<p class="MsoNormal" style="margin-left:0.5in;"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">             //whatever</span></font></p>
<p class="MsoNormal" style="margin-left:0.5in;"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">}</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">}</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">The warning would read  like this: “1084: function bar will be scoped to the default namespace:  Foo.internal and will not be visible outside this package”.  Now this is useful  information only if the developer wanted this function to be visible outside its  package.  On the other hand, if the intended design was to not have this  function visible outside the package, then the signature of the function is  correct and specifying any of the scope keywords (public, private or protected)  on this function just to get rid of the warning would be incorrect as  that’s changing the design.  Package scope is common in modern object oriented languages such as Java and ActionScript 3.  Java compiler does not complain about it, AS compiler shouldn&#8217;t too. </span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">2.  The other such  warning that comes up very frequently in Flex has to do with bindings.  For  example – </span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;"> Let’s say that I have a  mxml component as follows:</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">&lt;mx:Text  text=”{label}” xmlns….&gt;</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">             &lt;mx:Script&gt;</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">                         &lt;![CDATA[</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">                                     public var label:String;</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">                         ]]&gt;</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">             &lt;/mx:Script&gt;</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;">&lt;/mx:Text&gt;</span></font></p>
<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size:10pt;color:navy;font-family:Arial;"> Flex will give you a  warning that changes to label will not be detected by data binding.  This is an  issue only if the developer wants the variable to be bindable.  In many cases  in an application where [Bindable] has not been specified for a variable, the developer did  not want it to be bindable mostly because the variable will never change its  value once it has been initialized or if the intent is that the change in value should not update the bound variable.  One way to achieve this is to manuelly update the value in AS code instead of specifying it as a bound variable in MXML.  That is not the idea case for people like myself who like the elegance of MXML and want to resist the temptation to write AS code. </span></font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=8&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2007/08/29/on-flex-compiler-warnings/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8745ccf55de196dd34221b50272c700f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">khurram</media:title>
		</media:content>
	</item>
		<item>
		<title>Flex Memory Leak in mx.core.Container class</title>
		<link>http://workdayui.wordpress.com/2007/08/29/flex-memory-leak-in-mxcorecontainer-class/</link>
		<comments>http://workdayui.wordpress.com/2007/08/29/flex-memory-leak-in-mxcorecontainer-class/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 19:32:42 +0000</pubDate>
		<dc:creator>khurram</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[memory leak]]></category>
		<category><![CDATA[mx.core.Container]]></category>

		<guid isPermaLink="false">http://workdayui.wordpress.com/2007/08/29/flex-memory-leak-in-mxcorecontainer-class/</guid>
		<description><![CDATA[We ran into this issue while debugging memory issues in our flex application. This issue has been fixed in the latest beta version of the Flash Player 9.0.60.184. Here is the issue for your reference as it might help you debug memory issues in your application, also download and run the example source to replicate [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=7&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We ran into this issue while debugging memory issues in our flex application.  This issue has been fixed in the latest beta version of the Flash Player 9.0.60.184.  Here is the issue for your reference as it might help you debug memory issues in your application, also <a href="http://www.silvafug.org/downloads/ContainerLeak.zip" title="Source to replicate issue" target="_blank">download and run the example source </a>to replicate it.</p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">As I was debugging some of the  memory issues we are having, I noticed that the objects of types container do  not get garbage collected if they have one or more children specified as MXML  tags (or alternatively added through component descriptors).  I looked at the  mx.core.Container class and noticed that it keeps an array called  _createdComponents of all the components that were created through their  descriptors.  It populates that array in the createComponentsFromDescriptors  method.  The problem is that it never gets rid of the components in the array  when they are removed by calling any of the remove methods such as  removeAllchildren, removeChildAt etc.  That array thus keeps a strong reference  to children that had already been deleted and should have been garbage  collected.  This also gives rise to a circular reference case where the parent  and the child both don’t get GC’d.</span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">I have <a href="http://www.silvafug.org/downloads/ContainerLeak.zip" title="Source to replicate issue" target="_blank">created a small program </a>that  might be helpful in reproducing this bug. </span></font></p>
<ol>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">After you load the files into a project, run the  swf</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on  “Create AS based child”</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on &#8220;Trace Reference&#8221;, it will show you the created children</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on  &#8220;Remove All&#8221; and then &#8220;Force GC&#8221;</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on  trace reference, you will see no references</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on &#8220;</span></font><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Create Descriptor based child&#8221;</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on &#8220;Trace Reference&#8221;, it will show you the created children</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on  &#8220;Remove All&#8221; and then &#8220;Force GC&#8221;</span></font></li>
<li class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10pt;font-family:Arial;">Click on &#8220;Trace Reference&#8221;, you will notice that the  reference still hangs around even after it has been deleted and GC has  run</span></font></li>
</ol>
<p>There is another memory leak that occurs when you specify verticalGap or horizontalGap attributes on any container.  This issue has also been resolved in the Flash Player version specified above.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/workdayui.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/workdayui.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/workdayui.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/workdayui.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/workdayui.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/workdayui.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/workdayui.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/workdayui.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/workdayui.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/workdayui.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=workdayui.wordpress.com&amp;blog=1035668&amp;post=7&amp;subd=workdayui&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://workdayui.wordpress.com/2007/08/29/flex-memory-leak-in-mxcorecontainer-class/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8745ccf55de196dd34221b50272c700f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">khurram</media:title>
		</media:content>
	</item>
	</channel>
</rss>
