<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>PhilterBlog</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/" />
   <link rel="self" type="application/atom+xml" href="http://www.philterdesign.com/blog/atom.xml" />
   <id>tag:www.philterdesign.com,2010:/blog//1</id>
   <updated>2008-11-17T20:57:33Z</updated>
   <subtitle>Random Thoughts on Flash/Flex/AIR/Silverlight from the Philter Design Studios Team</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.34</generator>

<entry>
   <title>MAX Keynote Day 1 - Amazing!</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/11/max_keynote_day_1_amazing.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.30</id>
   
   <published>2008-11-17T19:08:23Z</published>
   <updated>2008-11-17T20:57:33Z</updated>
   
   <summary>This year&apos;s day 1 keynote was chock full of amazing stuff. Here are some of the key points for developers along with links. If you want to follow MAX with up to the minute news, get MAXimizr, an AIR app...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[This year's day 1 keynote was chock full of amazing stuff.  Here are some of the key points for developers along with links.  If you want to follow MAX with up to the minute news, get <a href="http://www.philterdesign.com/blog/2008/11/maximizr_the_latest_adobe_max_1.html">MAXimizr</a>, an AIR app we built for those who aren't able to be in SF.

<ul>
<li><strong>Flash Platform</strong> - Umbrella terminology for all things Flash.  Pretty sure this isn't a new term, but maybe to reiterate the centrality of Flash player in all of this.  <a href="http://www.adobe.com/flashplatform/">Flash Platform Home</a>.</li>
<li><strong>Flash Catalyst</strong> - The app formerly known as Thermo promised to vastly improve designer/developer workflow.  We should be seeing a lot more of it before MAX is over.  Unfortunately, it won't be available on labs until early 2009.  <a href="http://labs.adobe.com/technologies/flashcatalyst/">Catalyst on Labs</a>.  <a href="http://thermoteamblog.com/category/started/">Catalyst Blog</a>. </li>
<li><strong>Gumbo (Flex 4)</strong> - Not really breaking news as builds have been available on Labs for quite some time, but it is tightly connected with Catalyst so it deserves a mention.  <a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo">Gumbo on Adobe Open Source</a>.</li>
<li><strong>AIR 1.5</strong> - Updates include support for FP10 features, encryption in local databases and updated WebKit for faster html based rendering.  <a href="http://www.adobe.com/devnet/logged_in/rchristensen_lpolanco_air_1.5.html">Intro Article</a>.  <a href="http://get.adobe.com/air/">Download the runtime</a>.  <a href="http://www.adobe.com/products/air/tools/sdk/">Download the SDK</a>.</li>   
<li><strong>Tour de Flex</strong> -  a desktop application for exploring Flex capabilities and resources, including the core Flex components, Adobe AIR and data integration, as well as a variety of third-party components, effects, skins, and more.  <a href="http://flex.org/tour">Download it</a>.</li> 
<li><strong>Cocomo</strong> - a "platform as service" that allows Flex devs to easily add real-time social capatilities to their apps.  <a href="http://labs.adobe.com/technologies/cocomo/">Cocomo on Labs</a>.  <a href="https://cocomo.acrobat.com/">Developer Portal</a>. </li>
<li><strong>Wave</strong> - a desktop notification service built in AIR allowing users to receive notifications from publishers that they specify.  <a href="http://labs.adobe.com/wiki/index.php/Adobe_Wave">Wave on Labs</a>. </li>
<li><strong>Flash player 10 for mobile</strong> - hopefully I'm reading this correctly, but they're shooting for a fully functional FP10 for mobile devices.  Fantasic news for developers.  Obviously hardware may be a limitation, but demos were shown on Symbian, Win mobile and Android (sorry, no FP on iPhone yet...that's in Apple's hands)</li>
<li><strong>Distributable Flash Lite player</strong> - another awesome piece of news!  Apps can be deployed with the ability to install Flash Lite if required (over the air).</li>
</ul>

Also, not sure if this was directly touched on in the keynote, but <strong>Flash Media Server 3.5</strong> was announced.  <a href="http://blogs.adobe.com/ktowes/2008/11/introducing_adobe_flash_media.html">Read about it here</a>.  <a href="http://www.adobe.com/products/flashmediaserver/">Get it</a>.

Can't wait to see what the Day 2 Keynote brings.]]>
      
   </content>
</entry>
<entry>
   <title>MAXimizr - The Latest Adobe MAX News on Your Desktop</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/11/maximizr_the_latest_adobe_max_1.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.26</id>
   
   <published>2008-11-14T09:40:06Z</published>
   <updated>2008-11-14T16:47:34Z</updated>
   
   <summary>This year&apos;s Adobe MAX conference is shaping up to be one of the most exciting in recent memory with CS4 just released and much hyped previews of new products such as Thermo to come as well as lots of other...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="AIR" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[This year's <a href="http://max.adobe.com/">Adobe MAX conference</a> is shaping up to be one of the most exciting in recent memory with CS4 just released and much hyped previews of new products such as <a href="http://www.webkitchen.be/2008/11/13/cant-wait-to-get-your-hands-on-thermo-heres-how-to-get-it-early/">Thermo</a> to come as well as <a href="http://www.flashmagazine.com/news/detail/what_will_adobe_announce_at_max/">lots of other cool tools</a>.  So in order to follow all of the goings on, we've built an AIR app called MAXimizr.

MAXimizr 0.1.0 aggregates all of the latest MAX related news as well as twitter entries.  Also, it will directly link to videos and session files as they become available so you can stay on top of it all.  Finally, it includes the entire MAX schedule so you can track what's going on.  You can navigate through all of the content using the scrollwheel or the now familiar click/drag/throw as seen in the iPhone.

<img src="http://www.philterdesign.com/blog/maximizr/screenshot.gif" alt="MAXimizr" />

We have plans to build a lot more functionality in future versions of MAXimizr including:

1. Inline playback of video
2. Customizeable settings
3. Ability to favorite the sessions you are attending
4. Inline browser

If you're presenting at or attending MAX, feel free to <a href="mailto:phil@philterdesign.com">email me</a> once your session notes/files or recorded video are available and I'll link to it.

Requires the <a href="http://get.adobe.com/air/">Adobe AIR Runtime</a>.  Use the badge below to install MAXimizr:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="215" height="180" id="MAXimizr" align="middle">
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="allowFullScreen" value="true" />
	<param name="movie" value="http://www.philterdesign.com/blog/maximizr/AIRInstallBadge.swf?airversion=1.0&appname=MAXimizr&appurl=http://www.philterdesign.com/blog/maximizr/MAXimizr.air&image=http://www.philterdesign.com/blog/maximizr/installBadge.jpeg&appid=com.adobe.example.MAXimizr&appversion=0.1.0&hidehelp=true" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" />	<embed src="http://www.philterdesign.com/blog/maximizr/AIRInstallBadge.swf?airversion=1.0&appname=MAXimizr&appurl=http://www.philterdesign.com/blog/maximizr/MAXimizr.air&image=http://www.philterdesign.com/blog/maximizr/installBadge.jpeg&appid=com.adobe.example.MAXimizr&appversion=0.1.0&hidehelp=true"  quality="high" bgcolor="#000000" width="215" height="180" name="MAXimizr" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
	</object>]]>
      
   </content>
</entry>
<entry>
   <title>iCandy - FREE Flex Skin</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/10/icandy_free_flex_skin_1.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.22</id>
   
   <published>2008-10-20T17:23:03Z</published>
   <updated>2008-10-27T15:56:49Z</updated>
   
   <summary> iCandy was my entry into the ScaleNine Skin to Win competition. It took third place and a copy of CS4 Web Premium. There were some hiccups in the process of getting these graphical skins into a Flex app, which...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[<a href="http://www.scalenine.com/blog/source/challenge/Entry9/Entry9.html"><img src="http://www.philterdesign.com/blog/images/iCandy2.png" width="690" height="412" border="0"/></a>

<a href="http://www.scalenine.com/blog/source/challenge/Entry9/Entry9.html">iCandy</a> was my entry into the <a href="http://www.scalenine.com/contest/">ScaleNine Skin to Win</a> competition.  It took third place and a copy of CS4 Web Premium.  There were some hiccups in the process of getting these graphical skins into a Flex app, which anyone doing graphical skinning should be aware of (I've <a href="http://www.philterdesign.com/blog/2008/10/useful_tips_when_creating_grap.html">documented here</a>), but overall I was happy with the result.

Thanks to <a href="http://www.scalenine.com/">Juan</a> for putting this on, and to <a href="http://www.adobe.com/">Adobe</a> and <a href="http://www.effectiveui.com/">EffectiveUI</a> for sponsoring with some great prizes.

The skins should be available for download on <a href="http://www.scalenine.com/">ScaleNine</a> shortly, but you can preview the <a href="http://www.scalenine.com/blog/source/challenge/Entry9/Entry9.html">skins here</a>.  Congrats to the other winners, the team from <a href="http://www.undefined.es/">Undefined</a> for their <a href="http://www.scalenine.com/blog/source/challenge/Entry26/Entry26.html">Undefined skin</a>, and <a href="http://www.asfusion.com/">Nahuel Faronda</a> for his <a href="http://www.scalenine.com/blog/source/challenge/Entry23/Entry23.html">Brownie</a> skin.

[<b>UPDATE:</b> The <a href="http://www.scalenine.com/themes/icandy/iCandy.html">iCandy</a> <a href="http://www.scalenine.com/themes/icandy/srcview/iCandy.zip">project files</a> as well as the <a href="http://www.scalenine.com/themes/icandy/iCandySource.zip">source FLA</a> are now available on ScaleNine.  Enjoy!]]]>
      
   </content>
</entry>
<entry>
   <title>Useful Tips When Creating Graphical Skins for Flex 3</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/10/useful_tips_when_creating_grap.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.21</id>
   
   <published>2008-10-02T15:55:12Z</published>
   <updated>2008-10-20T19:24:34Z</updated>
   
   <summary>Having done several CSS skins for various projects in the past, recently, I had the opportunity to create a set of almost entirely graphical skins. Having stepped through that process, I wanted to write down some tips when attempting to...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[Having done several CSS skins for various projects in the past, recently, I had the opportunity to create a set of almost entirely graphical skins.  Having stepped through that process, I wanted to write down some tips when attempting to create graphical skins.  All of these skins were created using Flash CS3 as opposed to Photoshop or Fireworks.  This isn’t so much a step by step tutorial (a good tutorial by <a href=http://www.adobe.com/devnet/flex/articles/skins_styles.html>Narciso Jaramillo can be found on DevNet</a>) as it is a list of pointers as there are a few issues you may run into when implementing graphical skins.

I’ll start by saying that my experience in general was positive and in large part, the tutorial was a great resource.  For a large number of the components, skinning was super simple and Adobe really did a good job (though <a href=http://www.philterdesign.com/blog/2008/09/10_reasons_to_dig_skinning_in_1.html>skinning in Gumbo is that much better</a>).  However, there are some little things that needed massaging in order to work.  I’ll touch on each of those below.

As mentioned in the tutorial, install the <a href=http://www.adobe.com/go/flex3_cs3_swfkit>Flex Component Kit for Flash CS3</a> as well as the <a href=”http://www.adobe.com/go/flex3_skinning”>Flex Design Extensions</a>.  These will make your life a whole lot easier as they include template files for most components (New > Templates > Flex Skins).  Once you publish from the template file as a swc, you can import them easily into Flex Builder.

When modifying graphics in Flash, here are a few tips:

<ul>
<li>Try to make the size of your graphics match the size of the default graphics in the template fla.  If you change the size and position of graphics, you may get unexpected results.</li>
<li>Make sure the size of graphics in all states is the same.  If sizes change across states, it will likely result in text labels or other parts of your component moving when the state changes.  This includes things like keeping the “check” in your checkbox inside the bounds of your “box.”</li>
<li>When importing a slider skin into Flex from your template, you’ll need to add a CSS style definition for both HSlider and VSlider.  By default, the swc imports a definition for Slider only which doesn’t change skins for either Slider component.</li>
<li>When customizing the shape of your skin, you can round or unround corners, but if you do, make sure you use the “focusRoundedCorners” style along with “cornerRadius” for that component to either round or unround the focus rectangle.</li>
<li>When customizing the indeterminate graphic for ProgressBar, be careful with the spacing of your barber pole or you’ll get skipping during the animation.  Going with the same spacing in the template file of course is the easiest way to go.</li>
<li>An obvious one, but make sure that you don’t use MovieClip symbols inside of your skin clips that require 9-slice scaling as they won’t scale properly.  I’ve also found that using Graphic symbols can also cause weirdness.  In general, it’s best to just use shapes in your skin clips.</li>
<li>The skin for the MenuBar_itemSkin doesn’t work properly.  By default, the template contains a single clip with separate states for up/over/down.  However, in order to get it to work properly in Flex, I had to break it into separate clips (MenuBar_itemUpSkin, MenuBar_itemOverSkin, MenuBar_itemDownSkin), each representing a single state only.</li>  
<li>When customizing background skins for List based components, keep in mind that by default, the ItemRenderer background extends to the edge of the component, so that it will obscure your border at the very least in over and selected states.  In order to have your ItemRenderer background sit inside your component border, you need to create a custom renderer.  The other options are to either have no border or to make your ItemRenderer backgroundColor style the same color as your border.</li>  
<li>Remember that some component skins are used by other components either via inheritance or composition (i.e., NumericStepper uses the TextInput borderSkin, ComboBox uses List’s, TextArea uses ScrollBars, etc.).  So if your TextInput skin graphic has rounded corners, take that into account when creating your stepper button skins.</li>
<li>Another obvious one, but remember that CSS styles don’t work with custom skin graphics.  Unfortunately, this means that creating a set of graphical skins that can be styled using CSS isn’t possible by default (i.e., backgroundColor, borderColor, etc.).  Not sure if anyone has implemented this ability with graphical skins, but I’ve started looking into it so stay tuned.</li>
<li>Unfortunately, there isn’t a simple way to graphically skin the DateChooser background as it’s baked into updateDisplayList of the DateChooser class, so your easiest bet is via CSS.</li>
<li>ComboBox’s editableSkin doesn’t work properly.  The symbol actually needs to be broken down into 4 separate symbols (ComboBox_editableUpSkin, ComboBox_editableOverSkin, ComboBox_editableDownSkin, ComboBox_editableDisabledSkin) and imported into Flex that way in order to work properly.  Also note that even though the template symbol is 21 pixels wide, the default width for the editable ComboBox's button is 22 pixels so you may want to resize the symbol so your arrow doesn't get stretched.</li>
<li>Unfortunately, using graphical skins for Panel can result in a bit of a mess as discussed <a href="http://bugs.adobe.com/jira/browse/SDK-14806">here</a>.  Basically, the contents of the panel don't respect the padding values.  One workaround is to set up the panel contents in a container and set the top/bottom/left/right values of that container to the same as the border in your panel graphic.</li>
</ul>
]]>
      
   </content>
</entry>
<entry>
   <title>10 Reasons to Dig Skinning in Flex 4</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/09/10_reasons_to_dig_skinning_in_1.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.20</id>
   
   <published>2008-09-23T17:34:33Z</published>
   <updated>2008-09-23T21:26:07Z</updated>
   
   <summary>This is old news for some, but seriously, after reading the skinning architecture docs and building a couple of sample skins using the Flex 4 SDK, I have to say that it completely rocks!

Up until Flex 4, the approach for architecting UI components (starting back with MX2004 all the way up to Flex 3) has been largely the same.  The result has generally been components with an amazingly wide feature set but that could take quite a bit of work to customize, particularly in regards to skinning.  Each generation of components has improved upon the previous one, but after looking at the Gumbo components, I absolutely love the new true MVC approach.  The fact that the view (skin) is pretty much completely decoupled from the controller makes customization more flexible and easier than ever.  

Here is a simple button skin built entirely in MXML.  Not super complex, yet it shows how easy skinning really is.  This example contains small customizations like animated transitions between states, lots of layered gradients, multiline label, label with glow, and others which could take quite a bit of work to implement in the existing framework.</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[This is old news for some, but seriously, after reading the skinning architecture docs and building a couple of sample skins using the Flex 4 SDK, I have to say that it completely rocks!

Up until Flex 4, the approach for architecting UI components (starting back with MX2004 all the way up to Flex 3) has been largely the same.  The result has generally been robust components with an amazingly wide feature set but that could take quite a bit of work to customize, particularly in regards to skinning.  Each generation of components has improved upon the previous one, but after looking at the Gumbo components, I absolutely love the new true MVC approach.  The fact that the view (skin) is pretty much completely decoupled from the controller makes customization more flexible and easier than ever.  

Here is a simple button skin built entirely in MXML (<a href="http://labs.adobe.com/technologies/flashplayer10/">Flash player 10</a> required).  Not super complex, yet it shows how easy skinning really is.  This example contains small customizations like animated transitions between states, lots of layered gradients, multiline label, label with glow, and others which could take quite a bit of work to implement in the existing framework.

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="350" height="100" id="Button" align="middle">
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="allowFullScreen" value="false" />
	<param name="movie" value="http://www.philterdesign.com/blog/samples/GumboTester.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />	<embed src="http://www.philterdesign.com/blog/samples/GumboTester.swf" quality="high" bgcolor="#ffffff" width="350" height="100" name="Button" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
	</object>

<a href="http://www.philterdesign.com/blog/samples/GumboButton/srcview/source/ButtonSkin1.mxml.html">Here is the MXML for the skin.</a>
<a href="http://www.philterdesign.com/blog/samples/GumboButton/srcview/">Here is the entire source package.</a>

Here are my top 10 things to love about skinning in Flex 4:

<ul>
<li><b><a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a></b> - A lot of this just wouldn't be possible without graphics tags introduced in Flex 4.</li>
<li><b>hostComponent</b> - The ability to bind anything in your skin to any property in the component allows the skin to pull the data it requires and display itself accordingly.</li>
<li><b>States and Selectors</b> - The ability to define states that correspond to states in the controller is made hugely powerful by the introduction of "state-selectors."  In MXML, you can now define values for any state your component implements (for example, in button, you can do <b>alpha.over="0.5"</b>).</li>
<li><b>Integration with the Flex 3 framework</b> - the Gumbo components extend the existing UIComponent class so things you are already familiar with like component lifecycle, events, and tabbing all still apply.</li>
<li><b>Skin parts</b> - The ability to break up your skin into parts, each defined in your controller to have it's own behavior.</li>
<li><b>Layout Agnostic</b> - You can quickly snap in different layout classes to display the component in different ways.  No longer is the layout tied into the component.</li>
<li><b>Flexibility</b> - Using all of the above techniques, <a href="http://www.onflexwithcf.org/index.cfm/2007/10/19/Flex-Roadmap-presented-by-Ely-Greenfield--Videos">Ely</a> has already demonstrated that you can customize a list to act like an Accordion or a TabBar without much difficulty.</li>
<li><b>Building via composition</b> - In this new architecture, it's super simple to just snap new pieces into a skin and wire them up to the hostComponent properties to create more complex components.  For example, List doesn't contain a ScrollBar by default, but to add one and make it work is fairly trivial.</li>
<li><b>Lightweight</b> - Since all of the non-essentials have been pulled out of these components, there is far less code which should mean improved performance.  Can they do as much as the Flex 3 component set?  No, but I don't think that's the intent initially, as these don't appear to be a replacement for those components, rather an alternative.</li>
<li><b>Thermo</b> - ever since I was blown away by the initial <a href="http://www.adobe.com/newsletters/edge/december2007/video/index.html">Thermo demo video</a> (particularly the parts on converting artwork to components), I was skeptical about how they would be able to support skinning in that way using the existing Flex component framework.  However, after seeing how skinning works in Gumbo, it now makes tie in with a tool like Thermo much more obvious.</li>
</ul>

Flex 4 rocks!]]>
      
   </content>
</entry>
<entry>
   <title>FXG (Flex Graphics) - The Missing Link</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/09/fxg_flex_graphics_the_missing_1.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.19</id>
   
   <published>2008-09-19T16:07:07Z</published>
   <updated>2008-09-19T17:30:25Z</updated>
   
   <summary>One of the biggest issues for me in the Flash/Flex workflow has been bringing graphics created in Flash into Flex. Don&apos;t get me wrong...I don&apos;t think the workflow is hugely painful. All you need to do is draw in Flash,...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[One of the biggest issues for me in the Flash/Flex workflow has been bringing graphics created in Flash into Flex.  Don't get me wrong...I don't think the workflow is hugely painful.  All you need to do is draw in Flash, compile, embed the swf in your Flex app and you're good to go.  However, if you need to tweak your graphics, resize a few pixels here, tweak a gradient there, for some reason, it just felt uncomfortable to have to go back to the Flash IDE, tweak, recompile, etc.

However, after reading the <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG spec</a>, I'm excited about what this will add to our arsenal.  A markup for graphics is something already implemented in Silverlight and was something we were sorely missing.  <a href="http://www.degrafa.com/">Degrafa</a> got the ball rolling in that arena, and it showed the capability to do some pretty <a href="http://www.degrafa.com/2007/07/27/how-complex-can-you-get-with-degrafa-very/">amazing stuff</a>.  That team continues to work with Adobe in the implementation of FXG.  

This new feature brings to bear a few questions in my mind:

<ul>
<li>Will we get additional UI controls in the Flex 4 IDE that allow manipulation of the markup (changing shape properties, applying/editing filters, changing text)?  Considering that the Flex IDE initially was created to make developers feel more at home by removing that "extraneous" stuff, it should be interesting to see what happens.  Or is Thermo solely the tool that will allow this capability?</li>
<li>
For more complex graphics that can be created in the Flash IDE (or even in Illustrator and imported into Flash), will there be an option to export to FXG?  I know there are inherent problems with this since the IDE supports things that FXG does not (i.e., timeline animation), but even the ability to select one or more graphics on stage and have it output FXG would be a cool feature.
</li>
<li>
How will creating/manipulating the graphics via UI controls bloat the markup.  In working with Blend and XAML, you could draw a rectangle to the stage and change a few settings and all of a sudden you get something that looks like this:
<p><img alt="XAML1.gif" src="http://www.philterdesign.com/blog/images/XAML1.gif" width="477" height="233" /></p>

Then try changing some of that XAML manually and it blows up if you're not careful.
</li>
</ul>

I'm excited about the potential this has for improving workflow.]]>
      
   </content>
</entry>
<entry>
   <title>AS3 Tutorial - Bitmap Based Preloader</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/09/as3_tutorial_bitmap_based_prel.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.18</id>
   
   <published>2008-09-15T17:43:27Z</published>
   <updated>2008-09-15T18:03:32Z</updated>
   
   <summary>Our resident Senior Flash developer, Kingston, has written a detailed tutorial on how to create a preloader while also applying knowledge of BitmapData and Tween classes. Kingston has taught Flash at various technical institutes so he understands how to transfer...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[Our resident Senior Flash developer, Kingston, has written a detailed tutorial on how to create a preloader while also applying knowledge of BitmapData and Tween classes.  Kingston has taught Flash at various technical institutes so he understands how to transfer his knowledge in a way that's easy to understand.

<a href="http://www.philterdesign.com/blog/tutorials/001preloader/">View the final preloader</a>

<a href="http://www.philterdesign.com/blog/tutorials/001preloader/001preloader.zip">Download the tutorial files</a>]]>
      
   </content>
</entry>
<entry>
   <title>Silverlight VS Flash?  Not Really.</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/09/silverlight_vs_flash_not_reall.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.16</id>
   
   <published>2008-09-11T10:00:33Z</published>
   <updated>2008-09-11T16:05:50Z</updated>
   
   <summary>We previously approached this argument from 2 sides: .NET developer and Flash developer. However, maybe that&apos;s not the most appropriate perspective on this issue. I recently came across this discussion (started back in May 2007 but still active as of...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[We previously approached this argument from 2 sides: <a href="http://www.philterdesign.com/blog/2008/09/silverlight_vs_flash.html">.NET developer </a>and <a href="http://www.philterdesign.com/blog/2008/09/silverlight_vs_flash_redux.html">Flash developer</a>.  However, maybe that's not the most appropriate perspective on this issue.

I recently came across <a href="http://silverlight.net/forums/t/634.aspx">this discussion</a> (started back in May 2007 but still active as of a week ago) at the Silverlight.net forums.  What interested me right away was that the initial poster is a .NET developer.  He was asking the Silverlight community for reasons to use Silverlight instead of Flex and specifically looking for "concrete value-add" after he was come up dry of reasons himself.  Unfortunately, it largely turned into a flame war after <a href="http://www.onflex.org/">Ted</a> piped up and stated the facts about the Flex side.  In the end, I'm not sure much was gained in terms of the initial question (feel free to read it as there are some interesting points made), but it did reinforce something in my mind.

Ever since MS released Silverlight, most of the discussion around Silverlight and Flash has been related to which is the better technology and whether one will win out at the demise of the other.  Unfortunately, the argument has revolved largely around programming languages and runtimes and development environments rather than the real issue at hand...ROI for the client.

When we distill it down to the basics of why we do what we do, it all comes down to ROI.  After all, that's the reason why we all have projects to work on isn't it?  The client is willing to pay money for something that will benefit their company.  Breaking that down further, I see 2 basic factors (related to developers like us) affecting ROI:

<b>1. User experience & brand awareness</b>

Obviously, we're all trying to build things in such a way that the user will have a positive experience.  The type of experience may vary depending on the goal of the project.  For example, an online hotel booking system needs to allow a potential customer to quickly find rooms available for specific dates, with specific parameters, and then follow through with the booking and payment.  A microsite for a car manufacturer needs to allow the customer to experience the car and entice them to become emotionally involved with it through the senses.  All the while, UI controls need to be intuitive and work like the user expects them to.  These are things we strive for as developers.  

To that end, if a technology supports a greater feature set, there may be more options to the client in terms of building that experience.  For example, being able to adjust bitmap color would allow customizing a product's color.  Support for 3D would allow the user to interact with the "virtual" product similar to the way they would the physical product.  Integration of rich charting components allows interesting ways for users to visualize data.  However, this has nothing to do with AS vs. C# or FlexBuilder vs. Visual Studio.  Those distinctions mean nothing to the end user.  Also, just because a technology supports more features doesn't necessarily mean they are the *right* features for the project.

In the end, the goal is generally to make a sale or make the user more aware of a brand in a positive way, which may result in a sale (or something intangible like the influence over choices that a user makes) in the future .  If the user has a good experience while using the app you've built, regardless of Flash or Silverlight, you've done your part.

<b>2. Development process</b>

This is the piece where we get a lot of passionate discussion about how one technology is better than the other.  MS developers are very passionate about their tools, languages and processes.  I think Flash & Flex developers are as well, though maybe not to the same degree.  But again, let's not lose our focus.  For someone to hail their technology as king because it uses a specific language is meaningless.  What's important is the ability for a developer to utilize that technology to build what they need to build quickly and intelligently (simplified yes, but that's the general goal).

The key here is efficiency of the development process.  In the end, that's what affects the client's bottom line.  To make a blanket statement that Visual Studio and C# is better than FlexBuilder and AS doesn't make sense (nor does the opposite argument).  However, if you have a team of developers who have honed their process in a given platform, then it would make sense to build using that platform.  That's why it does make sense for .NET developers to jump into Silverlight.  But to say that Silverlight is better than Flash just because it implements a subset of the .NET framework is again a misguided response.  To reiterate, what is the value-add for the client in that statement?

<b>Conclusion</b>

So where does this leave us?  Unfortunately, I think the question of whether one technology is better than the other will continue to live on despite the fact that it's not really the right question.  Don't get me wrong...I'm a Flash developer at heart and probably will be for a long time, and am passionate about it as most of you are.  However, instead of wasting our energies bickering with the "other side", let's use that passion to build better "stuff" and push Adobe and MS to continue developing the tools we need to do that.]]>
      
   </content>
</entry>
<entry>
   <title>Silverlight VS Flash - A Flash Developer&apos;s Perspective</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/09/silverlight_vs_flash_redux.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.15</id>
   
   <published>2008-09-05T13:00:29Z</published>
   <updated>2008-09-05T19:18:39Z</updated>
   
   <summary>After asking Chris to post his thoughts on the topic of Silverlight VS Flash from a .NET developer&apos;s standpoint, I wanted to post my thoughts from a Flash developer&apos;s perspective. I have been heavily involved in SL development over the...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[After asking Chris to post his thoughts on the topic of <a href="http://www.philterdesign.com/blog/2008/09/silverlight_vs_flash.html">Silverlight VS Flash</a> from a .NET developer's standpoint, I wanted to post my thoughts from a Flash developer's perspective.  I have been heavily involved in SL development over the past 8 months working for some big clients on big projects.  I realize that's a relatively short period of time considering I've been doing Flash development for nearly 10 years, but I've gained enough insight in that time to write down some informed thoughts.  Keep in mind that these thoughts are based on the current incarnation of SL2 (beta 2) and I'm sure some of this will have been addressed by the time SL2 drops in completed form.

<b>Runtime penetration</b>

No one disputes that the Flash player's penetration rates dwarf those of SL at this point.  So the key here is the ability for Microsoft to provide a seamless install experience.  Adobe has years of experience in this realm and have become experts of both minimizing the size of the runtime (squeezing as much as they can into every single kB) as well as providing a really simple install.  SL has a much larger runtime to download and install (anyone know the exact size of the beta2 player?) which sets them back right from the get go.  Obviously it supports a subset of the .NET framework so there are a lot of features there, but at the same time, it still lacks a lot of functionality already built into the Flash player (discussed below) which if/when implemented will only increase the player size.  This is key, as having a bad install experience may turn a user away from SL, but could also turn a user away from other install processes (i.e., Flash player).

<b>Workflow</b>

Visual Studio is no doubt a great tool for coding.  The ability to just plug in the SL development bits and start coding (only C# currently) is a dream for .NET developers.  As Chris mentioned, leveraging existing knowledge is key and MS have done a good job of that.  I have to say that the intellisense really is outstanding.  Integration with the backend is strong, as should be expected.  As Chris mentioned in the previous post, there are also lots of add ons which provide cool functionality.  The biggest area where improvement is needed is in the designer/developer workflow.  Firstly, even though VS displays the visuals associated with your XAML, you can't select or modify elements visually.  You have to edit the XAML directly.  Also, often it wouldn't display the entire "stage" in the display area but didn't give you the ability to scroll it so you could get it where you wanted it.  Expression Blend is a step in the right direction to address this.  You can create your XAML in Blend and then open it in VS, and your graphics are ready to go.  The problem comes when you need to tweak your graphics.  What I generally ended up doing was copying and pasting XAML back into Blend and tweaking visually there, however, there are issues if you are using custom XAML tags and such.  So it ended up being a really painful process.  On the flip side, you have Adobe's Creative Suite.  The designer/developer workflow there is far superior at this point and is promised to improve with the addition of Thermo (as well as other enhancement I'm sure we'll see in CS4).  If Thermo lives up to the hype, MS is going to have a lot of catching up to do.

<b>Features</b>

Though I've worked on several SL based projects, most of them had one thing in common - video.  It's no secret that a large part of the initial interest in SL has been building either standalone video players or players that integrate into a larger app.  Support for WMV is a driving force behind that.  And for the most part, I think that's a good application of the SL technology.  But the nod in overall feature set no doubt has to go to Flash.  Things like bitmap manipulation, advanced text rendering, printing, skinning, 3D engine, and sound generation, which are all things that put the "rich" into RIA, are currently largely unavailable in SL.

<b>Conclusion</b>

There are several compelling reasons why SL should be seriously considered for certain types of projects.  The same can be said for Flash/Flex.  Based on my experience, the most critical aspect of this whole debate is knowing the strengths and limitations of either technology and making decisions based on that information.  It would be ignorant to say that Flash is always the best solution in every situation or vice versa.  Part of our job is to advise and help clients make informed choices.  There will come a time in the future where you will be asked whether you think Flash or SL is the more appropriate choice for a project, so be prepared to defend your position.

In my next post, I'll discuss the heart of the issue...Silverlight VS Flash isn't necessarily the right way to approach this discussion of the 2 technologies.]]>
      
   </content>
</entry>
<entry>
   <title>Silverlight VS Flash - a .NET Developer&apos;s Perspective</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/09/silverlight_vs_flash.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.13</id>
   
   <published>2008-09-05T10:26:14Z</published>
   <updated>2008-09-05T17:08:59Z</updated>
   
   <summary>I wanted to take a look at Silverlight VS Flash, but this comparison has been done a million times (&quot;Silverlight VS Flash&quot; yields 205,000 results in google), so I wanted to look at it from the project manager side of...</summary>
   <author>
      <name>Chris Nicol</name>
      
   </author>
         <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[I wanted to take a look at Silverlight VS Flash, but this comparison has been done a million times ("Silverlight VS Flash" yields 205,000 results in google), so I wanted to look at it from the project manager side of things and why they should choose one over the other.  Neither technology is monstrously better than the other so picking the technology really depends on your needs, your resources and what you want to accomplish.  Hopefully this post will provide you with more perspective in making that decision. 

<u>Silverlight & .NET Framework:
</u>
The first and in my opinion the most appealing thing about Silverlight is its leverage of the .NET Framework.  There's some hurdles to get over when first venturing into the world of Silverlight, but for any seasoned .NET developer it feels just like home.
Any .NET Developer, whether windows or web based, can jump right into coding a Silverlight app with ease.  What does this mean for your project?  You can now take any .NET developer from your resource pool and expect results within a week or so of them first delving into Silverlight.

<u>IDE & Workflow:</u>

There's no question that Flex Builder is a huge improvement on the old Flash IDE, but I don't think any developer that's used both Flex and Visual Studio 2008 would deny that they are miles apart.  Visual Studio is a full blown and rich development environment, coupled with addons like ReSharper, CodeSmith, NUnit and so so much more, VS is on a whole different level.
Once you leverage common tools and practises within the .NET framework with your Silverlight app, you suddenly have the same core development structure as you can have for your windows apps.  Unit testing, Continuous Integration and agile development are available to any Silverlight developer.  So the workflow that you're used to in the .NET world is available to you with Silverlight, with the bonus of now being able to utilize WPF to add a rich UI.

<u>Market Exposure:</u>

The stats I can find suggest that about 85-95% of users on the web have some version of Flash Player installed on their machines.  Silverlight has a lot of catching up to do on this, but lets not forget this is Microsoft we're talking about not just some startup company trying to get a piece of the pie.  

Microsoft have made huge ground on getting exposure to the Silverlight plugin.  NBC moved to Silverlight right before their exclusive coverage of the Olympics, I've heard that's a big deal.  Also the DNC (Democratic National Convention) provided, for the first time, video coverage of the Convention on their website, of course Silverlight based.  Biggest of all though is the one that most people overlook ... according to Compete.com, Microsoft.com is the 8th most popular site on the Internet, with around 60 million unique visitors a month.  With the homepage and also the download center now in Silverlight that's quite a bit of exposure.

<u>Conclusion:</u>

Flash has been around for a long time and in a lot of ways it's still better than Silverlight.  You have to put it in perspective though, Flash is now moving into version 10, whereas Silverlight is in beta on version 2. 
Microsoft, however, has the benefit of leveraging years of work on the programming side whereas Actionscript is relatively new and has only recently started moving from a scripting language to more of a programming interface for Flash.

So bottom line it depends on your needs and resources, if you have a bunch of .NET Developers and a client that wants a RIA then it's really a no brainer ... Silverlight is for you.  If you have a client that needs a full scale business application on the web, Silverlight might also be for you as you have a full scale development framework to leverage.  If, however, you have a client that wants a cutting edge UI with 3D integration, then Flash might be a better option.  Either way RIA's are the future for business applications and if you want to pitch a solution to your client be sure to consider either Flash or Silverlight apps as a way to deliver that solution to your client.

---
Living to Code != Coding to Live

]]>
      
   </content>
</entry>
<entry>
   <title>The Evolution of Philter Design Studios</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2008/05/the_evolution_of_philter_desig.html" />
   <id>tag:www.philterdesign.com,2008:/blog//1.11</id>
   
   <published>2008-05-27T11:15:47Z</published>
   <updated>2008-05-27T17:23:23Z</updated>
   
   <summary>Hard to believe it&apos;s been over a year since I last posted. Like most other developers (except for those rare super diligent ones) work gets in the way of finding time to post useful information to my blog. However, I...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Corporate" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[Hard to believe it's been over a year since I last posted.  Like most other developers (except for those rare super diligent ones) work gets in the way of finding time to post useful information to my blog.  However, I thought I'd take this time to introduce the recently formed Philter Design Studios team.  Going from only a single developer (me) to a team has been quite an adjustment, but a positive one.  Between the 4 of us, maybe the frequency of posts will increase.  So here we are:

<b>Me (Phil Chung) (CEO)</b> - Not much changes for me aside from having to take more time to manage the team and clients and still find time to do the actual dev work.  Hard to believe it's been almost 10 years since I first picked up Flash.

<b>Kingston Fung (Lead Flash Developer)</b> - Kingston is an Adobe certified Flash developer with over 8 years of experience. He was also a part-time instructor for a recognizable technology institution sharing his Flash knowledge. Currently he is working with the latest Flash and Silverlight technology to develop robust rich internet applications. 

<b>David Pasieka (Flash Developer)</b> - David has been involved with the digital world since a very early age when he was given a Sinclaire ZX81 home computer, and learned to program in Basic on it. He then proceeded through an Apple IIE, and Amiga 2000, and is now at home on PC's and Mac's. As someone involved a great deal with the Arts, David became involved in freelance Graphic Design off and on for approximately 8 years, before applying to the Digital & Interactive Media Design program at NAIT.  It was there that he discovered a penchant for working with code, and he graduated with a specialization in Flash Development. 

<b>Chris Nicol (.NET/Silverlight Developer)</b> - Having moved to Canada from Ireland in 1999, Chris' education includes a Computer Systems Technology program as well as, more recently, a .NET developer program. Prior to graduating, he was hired by the company running that program to work as a .NET Web Application Developer.  Chris' experience includes development of several online pizza ordering sites and the highlight of his career was his trip to Hawaii for the successful launch of Pizza Hut's Hawaii's ordering application.  Along with programming, he is also addicted to soccer and golf.

Look forward to entries not only related to Flash/Flex/AIR, but also Silverlight.  I've had a lot of exposure to Silverlight over the past few months and I hope to share some of those thoughts in the coming days and weeks.  As well, each of the team members have valuable things to share from their own experiences and I think we have a really good mix of skillsets.]]>
      
   </content>
</entry>
<entry>
   <title>Flash sites and photography rock stars</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2007/04/flash_sites_and_photography_ro_1.html" />
   <id>tag:www.philterdesign.com,2007:/blog//1.5</id>
   
   <published>2007-04-19T15:44:56Z</published>
   <updated>2007-04-19T16:08:59Z</updated>
   
   <summary>Hey you with the camera...yeah, you... If you&apos;re interested in learning from 3 of the best photographers in the world (yes, I said world), you may be interested in attending YinYang Workshop. I recently developed the site for Dave &amp;...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[Hey you with the camera...yeah, you...

If you're interested in learning from 3 of the best photographers in the world (yes, I said world), you may be interested in attending <a href="http://www.yyworkshop.com/">YinYang Workshop</a>.  I recently developed the site for Dave & Quin Cheung of <a href="http://www.dqstudios.com/">DQ Studios </a>and Huy Nguyen of <a href="http://www.f8studio.com/">F8 Studio</a>, and not only are they photographic rock stars, they are amazing people who are truly gifted and passionate about what they do.  They are putting on a 3 day workshop in San Francisco in September of this year, and the seating is limited, so if you're interested, <a href="http://www.yyworkshop.com/">contact them right away</a>!

<img src="http://www.philterdesign.com/blog/images/dq/yyworkshop.jpg" width="500" height="372" border="0" alt="YinYang Workshop" />

If you need proof of the quality of their work, check out <a href="http://www.dqstudios.com/">DQ Studios' </a> and <a href="http://www.f8studio.com/">F8 Studio's</a> websites.  They truly do AMAZING work and have won tons of international awards!

On a related note, I also built a site promoting DQ Studios' new <a href="http://www.dqquikeys.com/">DQ QuiKeys</a>, a workflow empowerment tool for use with Photoshop.  See examples of what you can do with QuiKeys as well as tutorial videos by Dave & Quin themselves.

<img src="http://www.philterdesign.com/blog/images/dq/quikeys.jpg" width="510" height="599" border="0" alt="DQ QuiKeys" />]]>
      
   </content>
</entry>
<entry>
   <title>Apollo Widget - mxnaQUBE</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2007/04/apollo_widget_mxnaqube.html" />
   <id>tag:www.philterdesign.com,2007:/blog//1.9</id>
   
   <published>2007-04-12T15:53:51Z</published>
   <updated>2007-04-12T20:36:26Z</updated>
   
   <summary>As I mentioned in a previous post, it really is an exciting time to be a Flash (Flex/Apollo) developer. This was reiterated to me as I spent parts of the past 2 weeks building an Apollo widget I call mxnaQUBE...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="AIR" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[As I mentioned in a <a href="http://www.philterdesign.com/blog/2007/03/flex_2_is_the_new_flash_3.html">previous post</a>, it really is an exciting time to be a Flash (Flex/Apollo) developer.  This was reiterated to me as I spent parts of the past 2 weeks building an Apollo widget I call <b>mxnaQUBE</b> currently in beta version 0.5.  I have to say I haven't had this much fun developing something in quite some time.  Even though the API isn't nearly complete being that this is an alpha, there was enough there to build a widget (maybe it's an 'app', I don't know...) and one that I think I'll be using regularly.  Here is the rundown:

<b>What does it do?</b>

mxnaQUBE is a way to view posts aggregated by <a href="http://weblogs.macromedia.com/mxna/">mxna</a> (Macromedia XML News Aggregator).  It currently provides access to the newest posts, most popular posts and the ability to search posts.  On top of that, it auto-archives all posts that are consumed by the widget.  The best way to explain is to show it to you, so here are some screenshots:

<img src="http://www.philterdesign.com/blog/images/mxnaqube/qubeNewView.gif" width="310" height="310" alt="New Posts View" border="0">

New posts are displayed and updated every 3 minutes (version 1.0 will include a preferences panel that allows you to customize this, among other things).  Also, it prevents display of duplicate posts that are often found on mxna.

<img src="http://www.philterdesign.com/blog/images/mxnaqube/qubeSearchView.gif" width="310" height="310" alt="Search View" border="0">

You can search mxna based on keywords

<img src="http://www.philterdesign.com/blog/images/mxnaqube/qubePopularView.gif" width="310" height="310" alt="Most Popular Posts View" border="0">

You can view the most popular posts from the last day, week, month, year or of all time.

<img src="http://www.philterdesign.com/blog/images/mxnaqube/qubeHistoryView.gif" width="310" height="310" alt="Post Archive View" border="0">

The mxnaQUBE automatically archives all posts that are downloaded to it, so you'll have a history of posts grouped by category and feed that they are associated with.

<img src="http://www.philterdesign.com/blog/images/mxnaqube/qubeMiniView.gif" width="308" height="131" alt="Mini View" border="0">

There is a "mini" view that displays and cycles through only unread new postings.  This provides a concise way to view new posts.

<img src="http://www.philterdesign.com/blog/images/mxnaqube/qubeRotate.gif" width="342" height="321" alt="Cube Rotating" border="0">

As the name suggests, the widget is essentially a cube which can be rotated to see any of the views mentioned above.  You can rotate the cube by "nudging" the arrows in the bottom corners :)

Globally, the mxnaQUBE also implements tooltips as well as a connection status monitor indicating when you are online or offline.

<b>What will version 1.0 do?</b>

Version 1.0 will add functionality such as the following:

<ul class="module-list">
<li class="module-list-item">Right click menu (Apollo 1.0 WILL implement full control over the right click menu - Woohoo!)</li>
<li class="module-list-item">Preferences panel to provide the ability to control global settings as well as customize which feeds you want to auto-archive.</li>
<li class="module-list-item">Possibly additional cube views with the ability to choose the 4 views that are most beneficial to you.</li>
<li class="module-list-item">Possible auto update functionality to fix bugs, add features, etc.</li>
</ul>

<b>Other things I discovered while building it.</b>

<ul class="module-list">
<li class="module-list-item">Building an apollo app in Flex Builder is really as easy as people have said it is.  Adobe has done a good job of integration.  Doing things like transparencies, window dragging, minimizing, closing, and working with files are super simple.</li>
<li class="module-list-item"><a href="http://weblogs.macromedia.com/auhlmann/">Alex Uhlmann's</a> <a href="http://weblogs.macromedia.com/auhlmann/archives/2006/11/download_distor.cfm">distortion effects </a>are super cool :)</li>
<li class="module-list-item">Data binding is sooooo simple and works so well it's amazing.</li>
<li class="module-list-item">For the most part, skinning is pretty straightforward, however, I did run into a couple of issues.  The scrollbar skins in the AeonGraphical skin fla don't seem to match the width of the default scrollbars.  Also, i ended up scrapping my scrollbar skins altogether because for some reason when you use a custom skin for the scroll track, the ability to click the track to scroll gets killed altogether.  Anyone have a workaround for this?</li>
<li class="module-list-item">I love mxml more and more every day.  To be able to extend mxml components is awesome.  However, there is an issue with adding children via mxml to both the superclass and the child class as you get a compilation error.  A workaround is shown by Peter Ent, but to be honest, I couldn't get it to work properly.</li>
<li class="module-list-item">The Flex Style Explorer is a God-send.</li>
<li class="module-list-item">To manage all of my embedded assets, I wrote a simple AssetManager that pulls in all embedded assets and provides a static class through which to access your asset (handy if you are using your asset in multiple classes).</li>
<li class="module-list-item">Does anybody have a simple way to swap out HTML number codes for proper characters?  For example, &#8217; represents the right quotation mark.</li>
</ul>

<b>Where can I get it?</b>

<b><a href="http://www.philterdesign.com/dev/mxnaqube/version_0_5/mxnaQUBE.air">Download it here</a></b>

NOTE A: This is a beta version and so I make no promises that it won't self destruct at some point.  I have left it running for extended periods of time and it seems to function properly, however, if you do notice any bugs, please email me at <a href="mailto:phil@philterdesign.com" subject="mxnaQUBE Bugs">phil@philterdesign.com</a>.

NOTE B: The data coming back from the mxna webservice can be slow at times (particularly the data for new posts) so be patient :).

Please <a href="mailto:phil@philterdesign.com" subject="mxnaQUBE Feedback">email me your feedback</a> as it is appreciated.  If you have any suggestions on things you would like to see, please feel free to email me those as well (not saying they'll get implemented, but it never hurts to ask).

<b>[Update]</b> Apparently the fonts on the ComboBox and "GO" Button are not embedded properly.  Not sure why since they work properly in all other components.  Anyone run into these font embedding issues before?  Also, it appears that the bitmap font appears to be blurred.  Not really sure why.  Any comments would be welcome. <b>[/Update]</b> 

<b>[Update 2]</b>Fixed the font embedding issue with ComboBox and Button.  It was due to the fact that those components use bold versions of the fonts (which doesn't work with pixel fonts).  Thanks to <a href="http://www.morderdesign.com/">Kyle</a> for pointing out that they weren't embedded properly.  Just updated the fontWeight to "normal" and all is good.  Also, the fonts are now sharp (they weren't previously because for some reason I set fontAntiAliasType to "advanced".  The download link above has been updated with the new .air file.<b>[/Update 2]</b>]]>
      
   </content>
</entry>
<entry>
   <title>[Flexcerpts 201] - Other Relevant UIComponent Bits</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2007/03/flexcerpts_201_other_relevant.html" />
   <id>tag:www.philterdesign.com,2007:/blog//1.8</id>
   
   <published>2007-03-27T22:10:23Z</published>
   <updated>2007-03-27T22:21:07Z</updated>
   
   <summary>Previously, i discussed observations on UIComponent drawing. Before I follow with a simple example of how to apply that knowledge into extending a component, let&apos;s look at some of the other bits in UIComponent that might help you as you...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[Previously, i discussed observations on UIComponent drawing.  Before I follow with a simple example of how to apply that knowledge into extending a component, let's look at some of the other bits in UIComponent that might help you as you extend or build your own components (and that are used in the example I'll give):

<ul class="module-list">
<li class="module-list-item">If your component contains other components or displayable classes that only need to get added once, you should set them up in the createChildren() method.  This method gets run once, when the component is initializing.</li>
<li class="module-list-item">One of the things I love about Flex 2 is that it allows the creation of custom component styles with minimal effort.  Basically, all you need to know is this:

To create a new style, you use the "Style" metadata tag as follows in your component:
<blockquote>[Style(name="myCustomStyle", type="uint", format="Color", inherit="no")]</blockquote>
I won't go into details regarding all of the values for each of these tag attributes, but essentially, inserting this tag into your component automatically generates the style for you as well as events associated with style changes.  The only thing left for you to do is capture the event and draw your component based on the value of the style.  In order to do that, you use the styleChanged() method which looks as follows:
<blockquote>UIComponent.styleChanged(styleProp:String):void</blockquote>
When a style changes, this method is fired and gets passed the name of the style that has been changed (as you set in your metadata tag).  Within this method you can use the new style value to draw the component.  To access the value of your style, use:
<blockquote>UIComponent.getStyle(styleProp:String):*</blockquote>
This returns the value for your style.</li>
<li class="module-list-item">Unlike AS2, AS3 allows you to override internal player methods and getter/setters.  UIComponent does this on many occasions (for example, x, y, width, height, addChild, removeChild, ...) so that it can capture changes in value and dispatch events or add additional functionality where needed.  This is cool, but there are times when extending UIComponent or any Flex component that you want to directly access those overridden methods/properties.  The Flex framework exposes those within UIComponent in the mx_internal namespace using the "$" prefix.  If you extend a component, you can access those by doing something like:
<blockquote>mx_internal::$height = value;</blockquote>
For example, your component might draw a simple box that you just want to size using width and height rather than redrawing the graphics every time.  In that case you can use $width and $height.  Not often used, but still handy to know.</li>
</ul>
Now that we're equipped with these additional bits, we're prepared to tackle a simple example...
]]>
      
   </content>
</entry>
<entry>
   <title>Adobe myFeedz Tag Viewer</title>
   <link rel="alternate" type="text/html" href="http://www.philterdesign.com/blog/2007/03/adobe_myfeedz_tag_viewer.html" />
   <id>tag:www.philterdesign.com,2007:/blog//1.7</id>
   
   <published>2007-03-26T18:11:31Z</published>
   <updated>2007-03-26T18:30:09Z</updated>
   
   <summary>After seeing myFeedz and looking through the API, I figured I&apos;d build something visual out of it, and this Tag Viewer is what came out of it. Some of the features include: Tag cloud and related post visualization Favorite tag...</summary>
   <author>
      <name>Phil Chung</name>
      
   </author>
         <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://www.philterdesign.com/blog/">
      <![CDATA[After seeing <a href="http://www.myfeedz.com/">myFeedz</a> and looking through the API, I figured I'd build something visual out of it, and this <a href="http://www.philterdesign.com/dev/myfeedz/">Tag Viewer </a>is what came out of it.  Some of the features include:

<ul class="module-list">
<li class="module-list-item">Tag cloud and related post visualization</li>
<li class="module-list-item">Favorite tag list</li>
<li class="module-list-item">Tag search function that continually updates with tags</li>
<li class="module-list-item">Drag scroll UI</li>
</ul>

For me, the most interesting aspect was the drag scrolling and experimenting with different ways to scroll things horizontally and vertically.  I've started to port it over to Flex, however, the one big obstacle I ran across was trying to get drag scrolling to work with existing containers (unfortunately, when you turn off the scrollbars, you also lose the ability to set V and H scrollPosition).

I noticed that the api urls tend to be quite slow in returning data (not sure exactly of the reason), so it's not as zippy as it could be.  Also, the api really is currently limited to fetching tag clouds and posts, so it doesn't do everything that you can do through the <a href="http://www.myfeedz.com/">myFeedz site</a>.

<a href="http://www.philterdesign.com/dev/myfeedz/">Give it a try!</a>]]>
      
   </content>
</entry>

</feed>
