<?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"
	>

<channel>
	<title>Ryan Phelan</title>
	<atom:link href="http://www.rphelan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rphelan.com</link>
	<description>Exploring Flex, Design, and Visualization</description>
	<pubDate>Mon, 18 Aug 2008 16:09:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Colors on the Web: Brightness, Difference, and Accessibility</title>
		<link>http://www.rphelan.com/2008/08/18/colors-on-the-web-brightness-difference-and-accessibility/</link>
		<comments>http://www.rphelan.com/2008/08/18/colors-on-the-web-brightness-difference-and-accessibility/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 16:08:00 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Accessibility]]></category>

		<category><![CDATA[Color]]></category>

		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=47</guid>
		<description><![CDATA[I was doing some research a while back, trying to find a formula to compute the brightness of a color.  I found the solution here.  The document also gives a formula for computing the difference between two colors, and a heuristic for determining whether two colors have enough contrast to be readable on [...]]]></description>
			<content:encoded><![CDATA[<p>I was doing some research a while back, trying to find a formula to compute the brightness of a color.  I found the solution <a href="http://www.w3.org/TR/AERT#color-contrast" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.w3.org/TR/AERT#color-contrast');">here</a>.  The document also gives a formula for computing the difference between two colors, and a heuristic for determining whether two colors have enough contrast to be readable on a web page.  So of course I had to try them all out in AS3 and create a mini app for testing foreground and background colors for accessibility.  Why not run some of your next application's interface colors through and see how they measure up?</p>
<p><a href="http://www.rphelan.com/flex/ColorTest/ColorTest.html" >Application  </a>-  <a href="http://www.rphelan.com/flex/ColorTest/srcview/index.html" >Source</a></p>

<object	type="application/x-shockwave-flash"
			data="http://www.rphelan.com/flex/ColorTest/ColorTest.swf"
			width="450"
			height="525">
	<param name="movie" value="http://www.rphelan.com/flex/ColorTest/ColorTest.swf" />
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/08/18/colors-on-the-web-brightness-difference-and-accessibility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flex Builder Shortcuts and Timesavers</title>
		<link>http://www.rphelan.com/2008/08/01/flex-builder-shortcuts-and-timesavers/</link>
		<comments>http://www.rphelan.com/2008/08/01/flex-builder-shortcuts-and-timesavers/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 17:55:13 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Eclipse]]></category>

		<category><![CDATA[Flex Builder]]></category>

		<category><![CDATA[Workflow]]></category>

		<category><![CDATA[Shortcuts]]></category>

		<category><![CDATA[Timesavers]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=48</guid>
		<description><![CDATA[These are a few shortcuts that I've worked into my development routine that I couldn't live without.
Shortcuts:

Go to Definition:  Ctrl+Click on function name or variable to go to it's definition.
Auto Complete:  Ctrl+Space will bring up that handy list of auto-completion options.
Ctrl+/:  Comments or uncomments the selected line(s).
Ctrl+Shift+C:  Adds or removes block comment to selection.
Quick Outline:  [...]]]></description>
			<content:encoded><![CDATA[<p>These are a few shortcuts that I've worked into my development routine that I couldn't live without.</p>
<h4>Shortcuts:</h4>
<ol>
<li>Go to Definition:  Ctrl+Click on function name or variable to go to it's definition.</li>
<li>Auto Complete:  Ctrl+Space will bring up that handy list of auto-completion options.</li>
<li>Ctrl+/:  Comments or uncomments the selected line(s).</li>
<li>Ctrl+Shift+C:  Adds or removes block comment to selection.</li>
<li>Quick Outline:  Press Ctrl+O when editing an .as or .mxml file to get a list of class variables and functions.  You can type a few characters to filter the list, and when you select one, the editor will jump to the definition.  This is way faster than using the outline window or Ctrl+F to search for something.</li>
<li>Ctrl+Shift+T:  Browse all class types, select one to view the class definition.</li>
<li>Alt+Down &amp; Alt+Up:  Moves the selected line(s) up or down.  This is great for re-ordering variable declarations, mxml attributes, etc.</li>
<li>Ctrl+Alt+Down &amp; Ctrl+Alt+Up:  Copies the selected line(s) and pastes them above or below.  Combines 3 steps (select, copy, paste) into one!</li>
<li>Alt+Left &amp; Alt+Right:  Work like your browser's back and forward buttons for your navigation history.  This is especially useful when you are control-clicking or "quick-outlining" to function or variable definitions.</li>
</ol>
<h4>Other Savory Tips:</h4>
<ol>
<li>To create a series of nested folders in the project navigator, open the new-&gt;folder dialog and enter a path (e.g. com/rphelan/controls).  Eclipse will automatically create all folders in the path if they don't already exist.  This is very useful when first creating a project.</li>
<li>You can double-click to maximize/restore any panel in Eclipse.  I frequently expand my editor window to show the maximum amount of code possible.  (Note:  this does not legitimize writing super long lines of code.  I recommend wrapping at around 80 characters)</li>
</ol>
<p>If several of these are new to you, try out just one or two at a time and see how you like them.  Once they are second nature, try adding a few more.  My theory is that the less I have to rely on my mouse when developing the better.</p>
<p>Want to learn more?  Don't forget that you can bring up a list of relevant shortcut key options at any time by pressing Ctrl+Shift+L.</p>
<p><strong>Note:</strong> Mac users - just swap out the command key for control in each of these combos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/08/01/flex-builder-shortcuts-and-timesavers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Perfect Application for AIR</title>
		<link>http://www.rphelan.com/2008/07/15/a-perfect-application-for-air/</link>
		<comments>http://www.rphelan.com/2008/07/15/a-perfect-application-for-air/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 18:01:15 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Memory]]></category>

		<category><![CDATA[Music]]></category>

		<category><![CDATA[Playlist]]></category>

		<category><![CDATA[Taskbar]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=44</guid>
		<description><![CDATA[At work, we stream an internet radio station called WOXY which plays a really great selection of independent rock.  Since there's always new stuff coming on, I like to keep tabs on who I'm listening to when I hear something I like.  They have a pop-out playlist on their website, but it's inconvenient [...]]]></description>
			<content:encoded><![CDATA[<p>At work, we stream an internet radio station called <a href="http://www.woxy.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.woxy.com');">WOXY </a>which plays a really great selection of independent rock.  Since there's always new stuff coming on, I like to keep tabs on who I'm listening to when I hear something I like.  They have a pop-out playlist on their website, but it's inconvenient (or actually impossible) to keep a browser window open when I'm doing Flex development/debugging/etc.  So - I whipped together a mini AIR app that just sits in the taskbar and keeps an updated playlist.  We're hosting the application on my company's <a href="http://www.phenomblue.com/blog/?p=56" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.phenomblue.com/blog/?p=56');">blog</a>, and if anybody is interested in the source I'd be happy to post that too.  You can also check out <a href="http://woxy.lala.com/boards/showthread.php?t=54214" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://woxy.lala.com/boards/showthread.php?t=54214');">this discussion</a> on WOXY's Forum.  The feedback has been very positive so far, although some people are having a really hard time getting AIR installed.</p>
<p><img class="alignright size-full wp-image-46" title="WOXYplaylist" src="http://www.rphelan.com/flex/uploads/2008/07/woxyplaylist1.jpg" alt="WOXYplaylist" width="478" height="327" /></p>
<p><a href="http://www.rphelan.com/flex/uploads/2008/07/woxyplaylist.jpg" > </a></p>
<p>I was very impressed with this experience in the ease of putting together a taskbar based application.  There aren't as many resources out there yet for AIR as there are for Flex, but I found most of the syntax fairly concise and intuitive.  The major downside is AIR's memory footprint.  This obscenely simple application takes up 20-25 Mb of RAM!   I've been reading similar complaints about other AIR applications too.  Hopefully this will be addressed in a future release...</p>
<p><strong>Note:</strong> <em>I built this app for my windows box and haven't tested it on a mac... because OSX doesn't really have a taskbar, it may have some issues.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/07/15/a-perfect-application-for-air/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Job!</title>
		<link>http://www.rphelan.com/2008/06/13/new-job/</link>
		<comments>http://www.rphelan.com/2008/06/13/new-job/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 19:34:36 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Phenomblue]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=43</guid>
		<description><![CDATA[I recently accepted a position at Phenomblue, a digital design and technology firm based here in Omaha.  They work strictly with advertising agencies to provide a variety of media (web, mobile, kiosk, etc.) for big name clients all over the world.  I'm talking about "household name" companies like Gatorade, Samsung, and D-Link.  We have a [...]]]></description>
			<content:encoded><![CDATA[<p>I recently accepted a position at <a href="http://www.phenomblue.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.phenomblue.com');">Phenomblue</a>, a digital design and technology firm based here in Omaha.  They work strictly with advertising agencies to provide a variety of media (web, mobile, kiosk, etc.) for big name clients all over the world.  I'm talking about "household name" companies like Gatorade, Samsung, and D-Link.  We have a new Flex based website in the works which will contain dozens of client sites and case studies.</p>
<p><img src="http://www.phenomblue.com/images/site_elements/logo.jpg" alt="Phenomblue" width="282" height="60" /></p>
<p>I'm really excited because everything we do here is cutting edge.  Advertising agencies want (and are willing to pay for) the most current and exciting technology.  Also - we're growing fast.  If you live in the area and are a talented Flex or .NET developer, check out the <a href="http://www.workatphenomblue.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.workatphenomblue.com/');">work@phenomblue</a> site.  More details to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/06/13/new-job/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Taking Control of Flex Charting Styles</title>
		<link>http://www.rphelan.com/2008/05/23/taking-control-of-flex-charting-styles/</link>
		<comments>http://www.rphelan.com/2008/05/23/taking-control-of-flex-charting-styles/#comments</comments>
		<pubDate>Fri, 23 May 2008 20:47:24 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Visualization]]></category>

		<category><![CDATA[Color]]></category>

		<category><![CDATA[Data Visualization]]></category>

		<category><![CDATA[Flex Charting]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=36</guid>
		<description><![CDATA[This is a guide to help you modify the Flex charting components' default styles to create charts that are more attractive and easier to comprehend.
I have a fairly long history with building charting components in Flash and Flex.  My first job involved developing a suite of "drag and drop" charts and other modeling tools [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guide to help you modify the Flex charting components' default styles to create charts that are more attractive and easier to comprehend.</em></p>
<p>I have a fairly long history with building charting components in Flash and Flex.  My first job involved developing a suite of "drag and drop" charts and other modeling tools in Flash for a financial modeling application.  Now I am working at Gallup, Inc. (the guys who do "the Gallup Poll"...) and have authored a Flex application which renders charts for <a href="http://www.gallup.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.gallup.com');">gallup.com</a> articles.  Along the way I've studied works by <a href="http://www.edwardtufte.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.edwardtufte.com');">Edward Tufte</a> (he's been called "the DaVinci of data visualization") as well as <a href="http://www.perceptualedge.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.perceptualedge.com/');">Stephen Few</a> (who offers some great practical application to Tufte's theory) and others.  Given all the research that has been done in human perception and data visualization, I feel that the default styles for the Flex charting components need a bit of tweaking to really optimize their usability.  (Also, from what I've seen of the ILOG Elixir library, those charts need <em>A LOT</em> of tweaking... but let's try to stay on topic ;).  This article will kick off a series where I will share some of my tricks for making charting components that are both aesthetically pleasing and easy to comprehend.</p>
<h4>Getting Started</h4>
<p>I'm going to focus on the 3 basic chart types:  LineChart, ColumnChart, and BarChart, and you can apply many of these tricks to other more complex types.  I created a simple application which sticks one of each chart type in a TabNavigator, gives them some data providers, and sets up the series.  Its pretty basic, no special styles are applied. <em>I realize that this would be a very poor structure for a real application - I'm organizing it in the way that best illustrates the techniques below.</em></p>
<p><img class="aligncenter size-full wp-image-41" title="Before" src="http://www.rphelan.com/flex/uploads/2008/05/before.png" alt="Before" width="410" height="270" /></p>
<p>From this point on you may find it useful to follow along with the source in the final application.</p>
<p><a href="http://www.rphelan.com/flex/ChartStyles/" >Application</a> - <a href="http://www.rphelan.com/flex/ChartStyles/srcview/" >Source</a></p>
<h4>Develop a Color Scheme</h4>
<p>I could write an entire post on the use of color (and I might in the future), but I'll cover this briefly.  Usually, you want all of your series to have equal visual weight, so the two obvious options are to vary the hue, or to vary the brightness and saturation.  One thing to keep in mind when varying hue though, is that about 1 in 76 people (thats 3.5 million in the US alone) have some sort of color deficit, the most common being red-green color blindness.  Selecting red and green colors that don't vary significantly in brightness can make your chart very difficult to interpret for a fairly significant part of the population.  It also might make your colors indistinguishable when printed in grayscale.   Let's play it safe by using the second option.  A great resource that I have used on many occasions is <a href="http://www.personal.psu.edu/cab38/ColorBrewer/ColorBrewer_intro.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.personal.psu.edu/cab38/ColorBrewer/ColorBrewer_intro.html');">Color Brewer</a>, which was developed by Cynthia Brewer to create good color schemes for maps.  The same schemes work great for graphs too!  I set it to "sequential" and selected a blue scheme which should work very nicely.</p>
<p>To apply your selected colors, set the "fill" property on each series.  You can bind to a SolidColor object created in actionscript, or inline a <code>&lt;fill&gt;</code> tag in mxml.</p>
<h4>Changing The Default Styles</h4>
<p>First thing's first:  the drop shadows have to go.  I'm all for using filters and effects in Flex applications, but they really tend to get in the way of the data when used in charts.  This is an easy fix.  Just set <code>seriesFilters="[]"</code> for each chart.</p>
<p>Similarly, since outlining bars will also add extra clutter, I will set <code>stroke="{null}"</code> for each series (BarSeries and ColumnSeries).</p>
<p>Now, because we want to override a lot of default settings on the Axis, AxisRenderers and GridLines, we'll have to explicitly lay them out in mxml for each chart type.  For the BarChart it will look something like this:</p>
<p><img class="alignleft size-full wp-image-37" style="display:block;" title="Explicit BarChart Elements" src="http://www.rphelan.com/flex/uploads/2008/05/charting1.png" alt="Explicit BarChart Elements" width="271" height="371" /></p>
<h4>AxisRenderers</h4>
<p>Rather than the fat blue axis that is available by default, I prefer to use a thinner light gray stroke instead.  The only purpose of the axis line is to provide a little visual separation between the categories (or dates) and the data - so it doesn't need a lot of visual weight.  The axis that runs along the LinearAxis (eg the horizontal one on a BarChart, or the vertical one on a ColumnChart) won't be necessary at all.  It will be implied by the grid lines which will all come to an end right at the axis.  To turn it off, set <code>showLine="false"</code>.</p>
<p><img class="aligncenter size-full wp-image-39" title="Implied Axis" src="http://www.rphelan.com/flex/uploads/2008/05/charting2.png" alt="Implied Axis" width="418" height="111" /></p>
<p>The next part is a little devious.  For simple graphs, we don't need tick marks -- we'll be using Gridlines, so they would be redundant, but you may have noticed by now that I set <code>tickPlacement="outside"</code> and <code>tickLength="n"</code> for all of the axes.  What I'm doing is using an invisible (alpha = 0) stroke for the tick marks, and setting their width to create additional space between the labels and the graph.  This isn't crucial, but I think the few pixels of extra white space does a lot to enhance the appearance and readability of the graph.</p>
<h4>GridLines</h4>
<p>Even the grid lines are often non-essential to the readability of the graph.  When the data permits it, I prefer to use <a href="http://demo.quietlyscheming.com/ChartSampler/app.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://demo.quietlyscheming.com/ChartSampler/app.html');">Ely Greenfield's bar labels</a> and leave the gridlines off all together.   This results in a super clean and modern look.  For the sake of example though, I included them here.</p>
<p>You always want the grid lines to run perpendicular to the LinearAxis.  (The only time I can think of that you would want them running both ways is in a chart with 2 linear axes, like a scatter plot).  You control this by setting <code>direction="vertical"</code> or <code>direction="horizontal"</code> on the GridLines element.  Likewise, we only want to display the origin (i.e. 0) for the same direction.  So on a ColumnChart, you would set <code>direction="horizontal"</code>, <code>verticalShowOrigin="false"</code> and <code>horizontalShowOrigin="true"</code>.  On a BarChart, you would set <code>direction="vertical"</code>, <code>verticalShowOrigin="true"</code> and <code>horizontalShowOrigin="false"</code>.</p>
<p>I chose to make the stroke for the origin the same as the stroke for the Axis:  light gray with 3 pixel weight.  The stroke for the grid lines themselves should be very faint - no more than 1 pixel wide and only slightly lighter or darker than the background color.  We don't want the grid lines to compete for the viewer's attention along with the actual data.</p>
<p>The final trick I employed here was offsetting the gridlines -.5 pixels.  This solves a glitch where the top line doesn't always display.  Try removing the line <code>x="-.5"</code> in the SampleBarChart class and you will see what I mean.  Obviously this is a hack, but it has worked pretty well for me thus far.</p>
<h4>LineCharts</h4>
<p>There aren't many differences here except we are setting the "lineStroke" style instead of "fill" on the series.  My rule of thumb is that the thickness of the line should approximately equal width/number of points or 3, whichever is less.  This is a very general heuristic, but will help ensure that in very dense data sets, the thickness of the line doesn't obscure the data points.  Because this isn't easy to generalize for all different types of dataProviders and because my data set isn't dynamic, I just set the weight to 3.</p>
<p>I also added a labelFunction to the DateTimeAxis so that the dates would show up in a more readable format.  "Feb 2008" is much more readable than "2/08".</p>
<h4>The Final Product</h4>
<p><img class="aligncenter size-full wp-image-42" title="After" src="http://www.rphelan.com/flex/uploads/2008/05/after.png" alt="After" width="410" height="274" /></p>
<p>That's it!  You could further improve on this example by adding a legend, selecting a better font, and maybe embedding the text - but I'll leave that for you to experiment with.   Of course these settings won't work for every situation, but I think it makes for a good starting point for whatever types of data you might come across.  As you probably have noticed, the emphasis is all on simplicity.  By removing the extra "fluff", you create a chart where the data is the main focus and enable the user to have the best possible experience.</p>
<p>If you have additional suggestions, or questions regarding chart styles feel free to comment.</p>
<p><a href="http://www.rphelan.com/flex/ChartStyles/" >Application</a> - <a href="http://www.rphelan.com/flex/ChartStyles/srcview/" >Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/05/23/taking-control-of-flex-charting-styles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Check Out the New Look</title>
		<link>http://www.rphelan.com/2008/05/09/check-out-the-new-look/</link>
		<comments>http://www.rphelan.com/2008/05/09/check-out-the-new-look/#comments</comments>
		<pubDate>Fri, 09 May 2008 23:45:27 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=34</guid>
		<description><![CDATA[I finally had some time to develop a custom design for my site, and launched it late last night.  Perhaps symbolically, I just underwent LASIK surgery this afternoon and my vision is already way more clear.  As a bonus, I get to wear some really sporty looking goggles for the rest of the [...]]]></description>
			<content:encoded><![CDATA[<p>I finally had some time to develop a custom design for my site, and launched it late last night.  Perhaps symbolically, I just underwent LASIK surgery this afternoon and my vision is already <em>way</em> more clear.  As a bonus, I get to wear some really sporty looking goggles for the rest of the day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/05/09/check-out-the-new-look/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Some Useful Eclipse Plugins for Flex Developers</title>
		<link>http://www.rphelan.com/2008/05/01/some-useful-eclipse-plugins-for-flex-developers/</link>
		<comments>http://www.rphelan.com/2008/05/01/some-useful-eclipse-plugins-for-flex-developers/#comments</comments>
		<pubDate>Thu, 01 May 2008 23:00:02 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Eclipse]]></category>

		<category><![CDATA[Flex Builder]]></category>

		<category><![CDATA[Workflow]]></category>

		<category><![CDATA[JIRA]]></category>

		<category><![CDATA[Memory Management]]></category>

		<category><![CDATA[Optimization]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[RegEx]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=29</guid>
		<description><![CDATA[These are some of the plugins I've been experimenting with lately to improve workflow, performance, etc.
AnyEdit Tools
Adds a bunch of useful tools into the right-click context menu, in a submenu called "Convert". My personal favorites are the "Convert -> Leading tabs to spaces" and "Convert -> Leading spaces to tabs".  I know that the [...]]]></description>
			<content:encoded><![CDATA[<p>These are some of the plugins I've been experimenting with lately to improve workflow, performance, etc.</p>
<h4><a href="http://andrei.gmxhome.de/anyedit/index.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://andrei.gmxhome.de/anyedit/index.html');">AnyEdit Tools</a></h4>
<p>Adds a bunch of useful tools into the right-click context menu, in a submenu called "Convert". My personal favorites are the "Convert <code>-></code> Leading tabs to spaces" and "Convert <code>-></code> Leading spaces to tabs".  I know that the <a href="http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions');">Flex Coding Conventions</a> tell you not to use tabs, but I prefer tabs to spaces in my own code because it keeps everything nicely formatted and easy to maintain.  If I need to say, paste some code into a blog entry, I use the AnyEdit tools to convert those tabs back to spaces so that it displays correctly.  I also frequently copy and paste bits of code found on websites, the user documentation, etc. into my source, and want to convert those tabs back to spaces.  Huge time saver!</p>
<ul>
<li>Convert <code>-></code> Camel <code><-></code> Underscores</li>
<li>Convert <code>-></code> Leading tabs to spaces</li>
<li>Convert <code>-></code> Leading spaces to tabs</li>
<li>Convert <code>-></code> Chars to html entities</li>
<li>Convert <code>-></code> Html entities to chars</li>
<li>Convert <code>-></code> To / From Unicode notation</li>
<li>Convert <code>-></code> To / From Base64</li>
</ul>
<h4><a href="http://regex-util.sourceforge.net/description.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://regex-util.sourceforge.net/description.html');">RegEx Editor</a></h4>
<p>This is a "View" that you can add to your perspective via Window <code>-></code> Show View <code>-></code> Other <code>-></code> Regex Util.  You can enter a regular expression and a string to test against.  It supports syntax highlighting and has very useful tooltips for characters that are part of regular expression syntax.</p>
<h4><a href="http://www.eclipse.org/mylyn/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.eclipse.org/mylyn/');">Mylyn</a></h4>
<p>I'm experimenting with using this at work to connect to our <a href="http://www.atlassian.com/software/jira/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.atlassian.com/software/jira/');">JIRA </a>repository.  (You could use it to connect to <a href="https://bugs.adobe.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/https://bugs.adobe.com/');">Adobe's bug tracking system</a> too).  Also works for Bugzilla, Trac, and possibly others.  Its cool that it pops up a message right in Eclipse whenever a new task is assigned to you, and also that you can tightly integrate it into your regular workflow.  The downside is that it seems to be lacking some of the basic features that the web interface has which (because of our system's configuration) prevents me from being able to create new tasks.  Maybe I just need to wait another version or two?</p>
<h4><a href="http://www.rphelan.com/2008/03/27/tweaking-compiler-performance-in-flex-builder/" >Heap Status</a></h4>
<p>I <a href="http://www.rphelan.com/2008/03/27/tweaking-compiler-performance-in-flex-builder/" >wrote a separate blog post</a> about this a while back, its cool to be able to get a glimpse of how the VM is managing your memory.</p>
<h4><a href="http://suif.stanford.edu/pub/keepresident/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://suif.stanford.edu/pub/keepresident/');">Keep Resident</a></h4>
<p>Uses some Windows hooks to try and keep Eclipse in memory as much as possible.  Use this if you are experiencing frequent "hang-ups" with your IDE.</p>
<blockquote><p>The performance of Eclipse (and other large Java applications) has long suffered due to the Windows virtual memory manager. Windows has a tendency to preemptively swap Java processes out of physical memory, even when there is still plenty of physical memory available. This interacts very poorly with Java processes, which do not have good locality and touch a lot of memory. The problem is exacerbated when Java performs garbage collection, which causes the Java process to touch lots of memory that has been paged out to disk. Ever had Eclipse randomly hang for 15-20 seconds? This is most likely the culprit.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/05/01/some-useful-eclipse-plugins-for-flex-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Source Code Formatter for Flex Builder?</title>
		<link>http://www.rphelan.com/2008/04/16/source-code-formatter-for-flex-builder/</link>
		<comments>http://www.rphelan.com/2008/04/16/source-code-formatter-for-flex-builder/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 14:30:47 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Flex Builder]]></category>

		<category><![CDATA[Flex 4]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=27</guid>
		<description><![CDATA[http://bugs.adobe.com/jira/browse/FB-8297
I added myself as a watcher to this feature request ages ago, and yesterday it got mysteriously re-opened and marked as "Internal Review".  Here's hoping they include it in Flex 4.  Go there and vote!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://bugs.adobe.com/jira/browse/FB-8297" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://bugs.adobe.com/jira/browse/FB-8297');">http://bugs.adobe.com/jira/browse/FB-8297</a></p>
<p>I added myself as a watcher to this feature request ages ago, and yesterday it got mysteriously re-opened and marked as "Internal Review".  Here's hoping they include it in Flex 4.  Go there and vote!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/04/16/source-code-formatter-for-flex-builder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Running Cairngen on a Mac</title>
		<link>http://www.rphelan.com/2008/04/12/running-cairngen-on-a-mac/</link>
		<comments>http://www.rphelan.com/2008/04/12/running-cairngen-on-a-mac/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 02:59:28 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Eclipse]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Flex Builder]]></category>

		<category><![CDATA[Workflow]]></category>

		<category><![CDATA[ANT]]></category>

		<category><![CDATA[Cairngen]]></category>

		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=26</guid>
		<description><![CDATA[I've been using Cairngen for a while on my PC and it works great.  It is a huge time saver for building Cairngorm based Flex applications.  When I tried using it on my MacBook Pro, I found out that it's not quite as straight forward.  There is a comprehensive discussion on the [...]]]></description>
			<content:encoded><![CDATA[<p>I've been using <a href="http://code.google.com/p/cairngen/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://code.google.com/p/cairngen/');">Cairngen</a> for a while on my PC and it works great.  It is a huge time saver for building Cairngorm based Flex applications.  When I tried using it on my MacBook Pro, I found out that it's not quite as straight forward.  There is a comprehensive discussion on the problem at <a href="http://www.ericfeminella.com/blog/2007/11/19/cairngen-21/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.ericfeminella.com/blog/2007/11/19/cairngen-21/');">Eric Feminella's blog</a> (creator of Cairngen) which was a huge help.  The issue is that Cairngen requires Java 6 which doesn't exist yet (officially) for OSX.  You can get around this by downloading a few libraries and including them in your Ant classpath.</p>
<p>Here's what I had to do to get Cairngen running on OSX 10.4 / Eclipse 3.3.2.  I'm assuming it would work for 10.5 too, but I haven't tested it.</p>
<ol>
<li>Download the following jars:
<ul>
<li><a rel="nofollow" href="http://www.mozilla.org/rhino/download.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.mozilla.org/rhino/download.html');">Mozilla Rhino (js.jar)</a></li>
<li><a rel="nofollow" href="http://jakarta.apache.org/site/downloads/downloads_bsf.cgi" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://jakarta.apache.org/site/downloads/downloads_bsf.cgi');">Jakarta BSF (bsf.jar)</a></li>
<li><a href="http://commons.apache.org/downloads/download_logging.cgi" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://commons.apache.org/downloads/download_logging.cgi');">Apache Commons Logging (commons-logging-1.1.1.jar)</a></li>
</ul>
</li>
<li>I placed the jars in the Ant lib folder in my Eclipse installation:  eclipse/plugins/org.apache.ant_1.7.0.../lib</li>
<li>Go to <code>Eclipse->Preferences->Ant->Runtime->Classpath</code>, select "Ant Home Entries" and add the three jars using the "Add External JARs..." button.</li>
</ol>
<p>That's it.  Hope you don't have to waste as much time figuring this out as I did!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/04/12/running-cairngen-on-a-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MXML Implementation of ChangeWatcher</title>
		<link>http://www.rphelan.com/2008/04/10/mxml-implementation-of-changewatcher/</link>
		<comments>http://www.rphelan.com/2008/04/10/mxml-implementation-of-changewatcher/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 14:15:22 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Custom Components]]></category>

		<category><![CDATA[MXML]]></category>

		<guid isPermaLink="false">http://www.rphelan.com/?p=25</guid>
		<description><![CDATA[I often find myself needing a simple implementation of ChangeWatcher.  I make a CreationComplete event handler for a component, create the ChangeWatcher, create a listener function, and do some simple action in the listener.  I was thinking today that it would be nice if you could do all this in one line of [...]]]></description>
			<content:encoded><![CDATA[<p>I often find myself needing a simple implementation of ChangeWatcher.  I make a CreationComplete event handler for a component, create the ChangeWatcher, create a listener function, and do some simple action in the listener.  I was thinking today that it would be nice if you could do all this in one line of mxml (like the mx:binding tag).  So, I created the RPChangeWatcher which does just that.</p>
<p>I have to credit <a href="http://brianjoseph31.typepad.com/smashedapples/2008/02/who-wants-to-se.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://brianjoseph31.typepad.com/smashedapples/2008/02/who-wants-to-se.html');">Brian Holmes</a> for  providing a really easy way to  do non-visual components without extending UIComponent.  This makes the RPChangeWatcher (thusly named to avoid namespace conflicts) really lightweight.  Check out the sample application:</p>
<p><a href="http://www.rphelan.com/flex/MXMLChangeWatcher/MXMLChangeWatcher.html" >application</a> -  <a href="http://www.rphelan.com/flex/MXMLChangeWatcher/srcview/index.html" >source</a></p>

<object	type="application/x-shockwave-flash"
			data="http://www.rphelan.com/flex/MXMLChangeWatcher/MXMLChangeWatcher.swf"
			width="450"
			height="240">
	<param name="movie" value="http://www.rphelan.com/flex/MXMLChangeWatcher/MXMLChangeWatcher.swf" />
</object>
<p>This is a very simple example, but imagine you're using some form of MVC and the currentDP being a variable in your model.  This particular view doesn't care how or why currentDP gets updated, it just wants to display an animation to transition between datasets.  That isn't possible using regular data binding, but it's pretty clean and simple with an mxml ChangeWatcher.</p>
<p>I haven't experimented with this a lot yet, but given that you can use data binding on the host and chain properties, I can see some potential for some pretty advanced use cases.</p>
<p>Any thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rphelan.com/2008/04/10/mxml-implementation-of-changewatcher/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
