<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2814003665874097395</id><updated>2011-10-17T06:44:37.637-06:00</updated><category term='flash'/><category term='yahoo flex skin'/><category term='templates'/><category term='styling'/><category term='gyroscope'/><category term='CommandProxy'/><category term='Microsoft'/><category term='sms'/><category term='flex 3'/><category term='3d'/><category term='360flex'/><category term='nvc cairngorm flex air ria'/><category term='robot'/><category term='brightkite'/><category term='legos'/><category term='cairngorm'/><category term='open source'/><category term='conference'/><category term='Universal Mind'/><category term='Mike Chambers'/><category term='c#'/><category term='code formatting'/><category term='ribbit'/><category term='user group'/><category term='flex charts'/><category term='excel'/><category term='inside ria'/><category term='fxg'/><category term='css'/><category term='nasdaq market replay'/><category term='eventgenerator'/><category term='skinning'/><category term='oreilly'/><category term='flex ria as3 as2 actionscript code highlighting'/><category term='Flex'/><category term='lffs'/><category term='fatc'/><category term='catalyst'/><category term='physics'/><category term='mims wright'/><category term='Scott Barnes'/><category term='flexlib'/><category term='flexcamp'/><category term='Adobe'/><category term='um cairngorm extentions'/><category term='user experience'/><category term='rich internet application'/><category term='data translator pattern'/><category term='flash camp'/><category term='java'/><category term='static code'/><category term='speaking'/><category term='fault handling'/><category term='merapi'/><category term='AIR'/><category term='cocomo'/><category term='Mylyn'/><category term='Eclipse Plugin'/><category term='ux'/><category term='roundarch'/><category term='tornado parkersburg ia'/><category term='Degrafa'/><category term='flex ria air apollo mvc cairngorm'/><category term='mxml'/><category term='mvc'/><category term='outlook'/><category term='bflex'/><category term='eclipseworld'/><category term='f*css'/><category term='dynamic skinning'/><category term='typinator'/><category term='flex 4'/><category term='joe merhl'/><category term='web maniacs'/><category term='blend'/><category term='accelerometer'/><category term='design'/><category term='adobe max'/><category term='career'/><category term='ria'/><category term='Artemis'/><category term='air iphone'/><category term='Silverlight'/><category term='.NET'/><category term='unimotion'/><category term='merapi flex air java universal mind'/><category term='360 flex'/><title type='text'>Adam Flater - Flex Blog</title><subtitle type='html'>Flex/RIA Software Architect</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>75</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-797142654460724771</id><published>2010-05-10T08:58:00.016-06:00</published><updated>2010-05-10T09:57:04.076-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fatc'/><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><category scheme='http://www.blogger.com/atom/ns#' term='catalyst'/><category scheme='http://www.blogger.com/atom/ns#' term='blend'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Flash and the City is this week!</title><content type='html'>&lt;p&gt;This week, I'll be at &lt;a href="http://flashandthecity.com/" target="_blank"&gt;Flash and the City (FATC)&lt;/a&gt; in downtown  Manhattan, a conference designed to give people the opportunity to  attend sessions with industry experts in  Flash, Flex, ColdFusion,  mobile, and UX design—all while exploring world-famous sites throughout  New York City. Conference-goers and speakers will also have the  opportunity to mingle at social events like a yacht cruise and Brooklyn  retreat.&lt;/p&gt;&lt;p&gt;The conference, held at the &lt;a href="http://3ldnyc.org/" target="_blank"&gt;3LD (3-Legged  Dog) Art &amp;amp; Technology Center&lt;/a&gt;, will feature tracks for Technology and  Inspiration, along with the City track for exploring local landmarks.  The Technology track will focus on coding and wiring for application  architecture while the Inspiration track will center on design and user  experience. The venue, which is a gallery for new media and experimental  artwork, is meant to mirror the tone of the conference in the way it  joins art and technology.&lt;/p&gt;&lt;p&gt;As part of the  Inspiration track, I'll be giving my talk entitled “&lt;a href="http://blog.flashandthecity.com/schedule/2010-sessions/day-3/inspiration-track/adam-flater-session/" target="_blank"&gt;Building RIAs with  Style&lt;/a&gt;,” which I premiered at &lt;a href="http://flashcampchicago2010.eventbrite.com/" target="_blank"&gt;Flash Camp Chicago&lt;/a&gt; in February and have  continued to refine since then. The talk starts with an introduction of  lower level concepts about web graphics for developers, continues with  exploring how some popular RIA frameworks handle styling, and wraps up  by comparing two important workflow tools—Adobe Flash Catalyst and  Microsoft Expression Blend—to demonstrate how the different platforms  operate.&lt;/p&gt;&lt;p&gt;My goal with this talk is to provide  rookies with a basis for understanding graphic assets, how to apply  styles in RIA development, and the importance of styling as well as  provide more advanced tricks of the trade for senior developers.&lt;/p&gt;&lt;p&gt;Check  back to hear how it went, but first,  watch my interview with  &lt;a href="http://twitter.com/EladElrom" target="_blank"&gt;Elad Elrom&lt;/a&gt;, &lt;a href="http://flashandthecity.com/" target="_blank"&gt;Flash and the City&lt;/a&gt; conference organizer. &lt;a href="http://twitter.com/EladElrom" target="_blank"&gt;Elad&lt;/a&gt; is a  technical writer and senior Flash engineer, and he will also be leading a  session entitled "&lt;a target='_blank' href="http://blog.flashandthecity.com/schedule/2010-sessions/day-2/technical-track/elad-elrom-session/"&gt;Flex Data Binding Pitfalls: 10 Common Misuse  Mistakes.&lt;/a&gt;"&lt;/p&gt;&lt;p&gt;&lt;a href="http://flashandthecity.com/" target="_blank"&gt;Flash  and the   City&lt;/a&gt; is May 14-16 in New York, New York.&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;iframe src="http://adamflater.com/blogassets/flatertv/20100510-0001/" width="620" frameborder="0" height="348" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-797142654460724771?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/797142654460724771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=797142654460724771' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/797142654460724771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/797142654460724771'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2010/05/flash-and-city-is-this-week.html' title='Flash and the City is this week!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-6873864146377489268</id><published>2010-02-26T14:57:00.003-07:00</published><updated>2010-02-26T15:13:48.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash camp'/><category scheme='http://www.blogger.com/atom/ns#' term='styling'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='f*css'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Flash Camp Chicago - Building RIAs with Style Resources</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://eventbrite-s3.s3.amazonaws.com/eventlogos/66323/559546619.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 371px; height: 82px;" src="http://eventbrite-s3.s3.amazonaws.com/eventlogos/66323/559546619.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As promised, here are the links that were referenced in my talk.&lt;br /&gt;&lt;br /&gt;Vector Graphics - &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Vector_graphics"&gt;http://en.wikipedia.org/wiki/Vector_graphics&lt;/a&gt;&lt;br /&gt;Raster Graphics - &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Raster_graphics"&gt;http://en.wikipedia.org/wiki/Raster_graphics&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;F*CSS&lt;br /&gt;&lt;br /&gt;Site - &lt;a target="_blank" href="http://fcss.flashartofwar.com"&gt;http://fcss.flashartofwar.com&lt;/a&gt;&lt;br /&gt;Source - &lt;a target="_blank" href="http://github.com/theflashbum/fcss"&gt;http://github.com/theflashbum/fcss&lt;/a&gt;&lt;br /&gt;Quick start - &lt;a target="_blank" href="http://fcss.flashartofwar.com/quick-start-guide"&gt;http://fcss.flashartofwar.com/quick-start-guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jesse Freeman - &lt;a target="_blank" href="http://twitter.com/theflashbum"&gt;@theflashbum&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://flashartofwar.com/"&gt;http://flashartofwar.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FlexFormatter&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://sourceforge.net/projects/flexformatter/"&gt;http://sourceforge.net/projects/flexformatter/&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://flexformatter.googlecode.com/svn/trunk/FlexFormatter/FlexPrettyPrintCommandUpdateSite/"&gt;http://flexformatter.googlecode.com/svn/trunk/FlexFormatter/FlexPrettyPrintCommandUpdateSite/&lt;/a&gt; (Eclipse software update URL)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a target="_blank" href="http://flashcampchicago2010.eventbrite.com/"&gt;Flash Camp Chicago&lt;/a&gt; for having me present and to &lt;a target="_blank" href="http://www.roundarch.com/"&gt;Roundarch&lt;/a&gt; for sponsoring my talk... it continues to be a exceptionally well-run conference and one of the highlights in my presenting year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-6873864146377489268?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/6873864146377489268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=6873864146377489268' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6873864146377489268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6873864146377489268'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2010/02/flash-camp-chicago-building-rias-with.html' title='Flash Camp Chicago - Building RIAs with Style Resources'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1756626072689552163</id><published>2009-10-25T13:59:00.004-06:00</published><updated>2009-10-25T15:02:00.078-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='bflex'/><title type='text'>Merapi Session from BFlex</title><content type='html'>&lt;p&gt;Today was the Flex portion of the &lt;a target="_blank" href="http://bflex.info/"&gt;BFusion/BFlex&lt;/a&gt; here in Bloomington, IN. I presented on integration native code in Flex with Merapi here at Indiana University. The main example we worked through involved automating Excel in Flex using Merapi .NET. The code for the example is checked into our Merapi Example repository. I thought a short screen cast might be helpful as well.&lt;/p&gt;&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vfCIfpZ88qA&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vfCIfpZ88qA&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;This example was developed using Flex 4 and Merapi .NET in C#. You'll need the &lt;a target="_blank" href="http://labs.adobe.com/technologies/flashbuilder4/&lt;br /&gt;"&gt;Flash Builder 4 beta&lt;/a&gt; to build the Flex code and &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;Visual Studio 2008&lt;/a&gt; to play with the C# code. However, if you'd like to skip that part, you can download the binary for the C# portion from &lt;a target="_blank" href="http://merapi-examples.googlecode.com/svn/trunk/excelautomation/excelautomation-cs/Excel-CS/bin/Debug/Excel-CS.exe"&gt;here&lt;/a&gt; and just run it from the command line.&lt;/p&gt;&lt;br /&gt;Additional resources:&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://merapi-examples.googlecode.com/svn/trunk/excelautomation/excelautomation-flex/bin-release/srcview/index.html"&gt;HTML view of the Flex code&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://merapi-examples.googlecode.com/svn/trunk/excelautomation/excelautomation-cs/srcview/"&gt;HTML view of the C# code&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://code.google.com/p/merapi-examples/source/browse/#svn/trunk/excelautomation"&gt;The Google Code repo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks to Bob and everyone involved with &lt;a taget="_blank" href="http://bflex.info/"&gt;BFlex&lt;/a&gt; for having me speak and putting on a great event.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1756626072689552163?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1756626072689552163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1756626072689552163' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1756626072689552163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1756626072689552163'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/10/merapi-session-from-bflex.html' title='Merapi Session from BFlex'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1201760083370884780</id><published>2009-09-13T18:20:00.009-06:00</published><updated>2009-09-13T19:00:58.327-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flexlib'/><category scheme='http://www.blogger.com/atom/ns#' term='fxg'/><category scheme='http://www.blogger.com/atom/ns#' term='flex charts'/><category scheme='http://www.blogger.com/atom/ns#' term='flex 3'/><category scheme='http://www.blogger.com/atom/ns#' term='flex 4'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Degrafa'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>New to flexlib: CSSPropertyInjector</title><content type='html'>&lt;p&gt;As my first contribution to &lt;a target="_blank" href="http://flexlib.googlecode.com/"&gt;flexlib&lt;/a&gt; I've been developing a utility class called "&lt;a target="_blank" href="http://code.google.com/p/flexlib/source/browse/trunk/src/flexlib/css/CSSPropertyInjector.as"&gt;CSSPropertyInjector&lt;/a&gt;". The &lt;a target="_blank" href="http://code.google.com/p/flexlib/source/browse/trunk/src/flexlib/css/CSSPropertyInjector.as"&gt;CSSPropertyInjector&lt;/a&gt; class is used to apply styles from CSS to an Object that has properties that are not stylable or on Objects that are generally not stylable. Another nice feature of &lt;a target="_blank" href="http://code.google.com/p/flexlib/source/browse/trunk/src/flexlib/css/CSSPropertyInjector.as"&gt;CSSPropertyInjector&lt;/a&gt; is the ability to specify multiple styleNames. This util will also allow multiple style selectors. The basic idea is that you bind a target object to the injector and set a styleName value. Given those two properties are set, the injector will automatically set styles or properties on the target object. Granted, it is possible to do a lot of stuff with this util that are questionable in terms of best practices, but it does give the option to apply styles to objects that never had the option in the past. So, without delay, on to examples.&lt;/p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flex 3 with multiple selectors:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3MultipleSelectorsExample/Flex3MultipleSelectorsExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 235px; height: 320px;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/Sq2M3ywj9mI/AAAAAAAAAHw/4bOCYG5JZXs/s320/multSelect.png" alt="" id="BLOGGER_PHOTO_ID_5381112019923760738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3MultipleSelectorsExample/Flex3MultipleSelectorsExample.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3MultipleSelectorsExample/srcview/index.html"&gt;View the Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;This example shows how powerful CSS can be with the ability to apply multiple selectors to each component. Each style is used generically and applied to a component regardless of the component's type. So, we're able to share a "redBorder" selector between button1, innerBox, and button2 without adding unique styles about the button's text colors, padding, etc to the "redBorder" selector.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Degrafa skin with styled elements:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3StyledDegrafaExample/Flex3StyledDegrafaExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 252px; height: 239px;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/Sq2NqVHNoII/AAAAAAAAAH4/3IcIlzmMJ2A/s320/degrafa.png" alt="" id="BLOGGER_PHOTO_ID_5381112888139030658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3StyledDegrafaExample/Flex3StyledDegrafaExample.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3StyledDegrafaExample/srcview/index.html"&gt;View the Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;This example shows a simple Degrafa circle with it's style properties (color, angle, alpha) abstracted into CSS. From a skinning perspective the lack of styles in Degrafa has always been just a little annoying for me. On large, enterprise applications it is essential to create conventional approaches to tasks performed throughout the app. Skinning is one of these tasks. Without the support of CSS, styling a Degrafa skin is much different than styling a halo skin, but now with the &lt;a target="_blank" href="http://code.google.com/p/flexlib/source/browse/trunk/src/flexlib/css/CSSPropertyInjector.as"&gt;CSSPropertyInjector&lt;/a&gt; util a similar styling approach can be taken with both skins types.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flex Chart with styled elements:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3StyledChartExample/Flex3StyledChartExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 297px;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/Sq2Obb0S5sI/AAAAAAAAAIA/-Bb7LPGZuBE/s320/chart.png" alt="" id="BLOGGER_PHOTO_ID_5381113731752322754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3StyledChartExample/Flex3StyledChartExample.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_3_CSSPropertyInjectory_Examples/bin-release/Flex3StyledChartExample/srcview/index.html"&gt;View the Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Another painful set of elements to style is the Flex Charting Framework. In this example you'll see that the color and weight of stroke of the LineSeries is styled using CSS.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flex 4 FXG with styled elements:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_4_CSSPropertyInjectory_Example/bin-release/Flex4CSSPropertyInjectoryExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 63px;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/Sq2O41VavYI/AAAAAAAAAII/YpU_4J2oRpo/s320/flex4.png" alt="" id="BLOGGER_PHOTO_ID_5381114236818341250" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_4_CSSPropertyInjectory_Example/bin-release/Flex4CSSPropertyInjectoryExample.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090913_Flex_4_CSSPropertyInjectory_Example/bin-release/srcview/index.html"&gt;View the Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;FXG is similar to Degrafa and easily styled using &lt;a target="_blank" href="http://code.google.com/p/flexlib/source/browse/trunk/src/flexlib/css/CSSPropertyInjector.as"&gt;CSSPropertyInjector&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, this is a start for &lt;a target="_blank" href="http://code.google.com/p/flexlib/source/browse/trunk/src/flexlib/css/CSSPropertyInjector.as"&gt;CSSPropertyInjector&lt;/a&gt;. It's checked into &lt;a target="_blank" href="http://flexlib.googlecode.com/"&gt;flexlib&lt;/a&gt; and ready for you to play with. I look forward to your feedback on making this a complete addition to &lt;a target="_blank" href="http://flexlib.googlecode.com/"&gt;flexlib&lt;/a&gt;. Please feel free to leave a comment on this post, e-mail me directly, or comment in the &lt;a target="_blank" href="http://flexlib.googlecode.com/"&gt;flexlib&lt;/a&gt; Google Code project.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1201760083370884780?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1201760083370884780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1201760083370884780' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1201760083370884780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1201760083370884780'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/09/new-to-flexlib-csspropertyinjector.html' title='New to flexlib: CSSPropertyInjector'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_h4sLtL2cd8A/Sq2M3ywj9mI/AAAAAAAAAHw/4bOCYG5JZXs/s72-c/multSelect.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2738648532250198014</id><published>2009-05-20T01:54:00.006-06:00</published><updated>2009-05-20T06:48:17.855-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Merapi is Open!</title><content type='html'>&lt;p&gt;I was proud to announce with &lt;a href="http://www.infoaccelerator.net" target="_blank"&gt;Andrew Powell&lt;/a&gt; today at &lt;a href="http://www.360flex.com/" target="_blank"&gt;360 Flex | Indy&lt;/a&gt;, that Merapi is now officially open source.&lt;/p&gt;&lt;p&gt;We've released the first public beta on Google Code as well as opened a Google Group. There is also a repo for Merapi examples.&lt;/p&gt;&lt;p&gt;Here are the important links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://merapi.googlecode.com/" target="_blank"&gt;http://merapi.googlecode.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://merapi-examples.googlecode.com/" target="_blank"&gt;http://merapi-examples.googlecode.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/merapi-project" target="_blank"&gt;http://groups.google.com/group/merapi-project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To find out more, keep an eye on our blogs. We'll be releasing more tutorials and answering questions as they appear.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2738648532250198014?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2738648532250198014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2738648532250198014' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2738648532250198014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2738648532250198014'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/05/merapi-is-open.html' title='Merapi is Open!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1457657400340857328</id><published>2009-05-03T21:58:00.019-06:00</published><updated>2009-05-04T21:50:18.086-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roundarch'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Joining Roundarch / Merapi Positioning</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_h4sLtL2cd8A/Sf5p-M0YwFI/AAAAAAAAAHY/_uVqJD9LBj0/s1600-h/ra-logo.png"&gt;&lt;img style="margin: 10pt 10pt 10px 10px; float: left; cursor: pointer; width: 249px; height: 65px;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/Sf5p-M0YwFI/AAAAAAAAAHY/_uVqJD9LBj0/s320/ra-logo.png" alt="" id="BLOGGER_PHOTO_ID_5331815526167003218" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;On March 9th I began a new position in the role of &lt;a href="http://www.linkedin.com/in/adamflater" target="_blank"&gt;Technical Architect and Evangelist&lt;/a&gt; at &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;. As I stated in my previous post, this was a difficult decision to make.&lt;/p&gt;&lt;p&gt;Now that I've had a couple months of settling in, I'm happy to say I'm enjoying my new role and the team at &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; very much.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; is not just an RIA or technology shop. We are specialized in Information Architecture, Graphic Design, User Experience, Technology and SEO. Our work is in serving clients, and our process provides unique advantages to the fortune 100/500 enterprises we engage with.&lt;/p&gt;&lt;p&gt;Now that I've had some time to get to know many of the 175 people that make up &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;, I've learned to appreciate &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;'s holistic approach towards solving problems. Although we do have experts that work within a discipline, we do not develop solutions in a vacuum. There is a belief at &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; that all disciplines (IA, UX, Design, Business, and Technology) should inform each other. This adds up to a group professionals who's combined background includes graduate and post graduate level training in; HCI, Computer Science, Design/Art, Business Administration, etc... all working together as a team to create solutions for our clients. That process is exciting to be a part of.&lt;/p&gt;&lt;p&gt;There were many incentives that influenced my decision to join &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;. A few highlighted reasons are:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt; Leadership that believes in the success and direction of the company.&lt;/li&gt;&lt;li&gt; Working with my friend &lt;a href="http://whatanexperience.org/" target="_blank"&gt;Dave Meeker&lt;/a&gt; on &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Working with my new friend and mentor Gary Schwartzbard in the &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; RIA practice.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;1. The Leadership&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;'s history comes from years of working under the &lt;a href="http://deloitte.com/" target="_blank"&gt;Deloitte&lt;/a&gt; and &lt;a href="http://wpp.com/" target="_blank"&gt;WPP&lt;/a&gt; flags. Our owners saw a distinct value in the people that became the founding members of &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; and purchased the practice from &lt;a href="http://deloitte.com/" target="_blank"&gt;Deloitte&lt;/a&gt;. It is a testimony to the leadership that many of the founding employees are currently managers, directors, and VPs even today. This is a leadership the has a clear vision of serving it's clients and valuing it's employes.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://whatanexperience.org/" target="_blank"&gt;Dave&lt;/a&gt; and &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Another part of my on-boarding to &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; was working with my friend &lt;a href="http://whatanexperience.org/" target="_blank"&gt;Dave Meeker&lt;/a&gt; to develop &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;'s capability's to offer unique services leveraging &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;. Most recently we've done this by assisting &lt;a href="http://www.teslamotors.com/" target="_blank"&gt;Tesla Motors&lt;/a&gt; in the release of their new &lt;a href="http://www.teslamotors.com/models/index.php" target="_blank"&gt;Model S&lt;/a&gt; electric car. You can read more about our involvement with &lt;a href="http://www.teslamotors.com/" target="_blank"&gt;Tesla&lt;/a&gt; on the &lt;a href="http://impost.roundarch.com/2009/04/29/the-tesla-model-s-touch-screen-user-experience-is-powered-by-roundarchs-merapi-project/" target="_blank"&gt;Roundarch blog&lt;/a&gt; and in this &lt;a href="http://www.marketwatch.com/news/story/roundarch-technology-amps-up-teslas/story.aspx?guid=%7B639AE116-99E3-4DFB-BB95-9B661C02B81A%7D&amp;amp;dist=msr_3" target="_blank"&gt;press release&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/Sf-tygD30MI/AAAAAAAAAHo/yRN_kZt2XDE/s1600-h/models.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 136px;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/Sf-tygD30MI/AAAAAAAAAHo/yRN_kZt2XDE/s320/models.png" alt="" id="BLOGGER_PHOTO_ID_5332171566941196482" border="0" /&gt;&lt;/a&gt;Shortly after the release hit the web, there was a bit of a surprise in the &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt; community about our positioning around &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;. Pieces of the text were (validly) interpreted by some to read that &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; now owned / had purchased &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;. This is not the message that &lt;a href="http://whatanexperience.org/" target="_blank"&gt;Dave&lt;/a&gt; or I intended to publish. &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; has and will invest time and money in promoting and developing the &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt; technology, however, we view the open source effort as a key part in the success of &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_h4sLtL2cd8A/Sf5rrBOnbgI/AAAAAAAAAHg/jTVLRy03lZU/s1600-h/merapicup.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 137px; height: 317px;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/Sf5rrBOnbgI/AAAAAAAAAHg/jTVLRy03lZU/s320/merapicup.jpg" alt="" id="BLOGGER_PHOTO_ID_5331817395661532674" border="0" /&gt;&lt;/a&gt;Last week my friend &lt;a href="http://infoaccelerator.net/" target="_blank"&gt;Andrew Powell&lt;/a&gt; raised some concerns over the future of &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt;, and the position of the open source project. For those of you in the RIA community, you've probably seen &lt;a href="http://infoaccelerator.net/" target="_blank"&gt;Andrew&lt;/a&gt; give talks about &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt; over the last year. He's been instrumental in helping develop the concepts of &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt; and has helped promote the technology in a great way.  Moving forward, &lt;a href="http://infoaccelerator.net/" target="_blank"&gt;Andrew&lt;/a&gt; will sit with me as co-chair of the open source project and help to ensure that a community focused version of Merapi's Flex/Java connectivity thrives.&lt;/p&gt;&lt;p&gt;This week &lt;a href="http://infoaccelerator.net/" target="_blank"&gt;Andy&lt;/a&gt;&lt;a&gt;, &lt;/a&gt;&lt;a href="http://whatanexperience.org/" target="_blank"&gt;Dave&lt;/a&gt; and I spoke about what might be the clearest, mutually beneficial way to position &lt;a href="http://merapiproject.net/" target="_blank"&gt;Merapi&lt;/a&gt; for the community and companies like &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; that want to invest in developing commercial solutions with it. Here's what we came up with...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The open source / community effort will be known as:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;   &lt;span style="font-size:130%;"&gt;Merapi or The Merapi Project&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; commercial effort will be known as:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;   &lt;span style="font-size:130%;"&gt;The Roundarch Merapi Platform&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The open source effort will target developing a solid core for Flex/AIR and Java. &lt;a href="http://infoaccelerator.net/" target="_blank"&gt;Andy&lt;/a&gt; and I will be handling how to approve members of the community who would like to contribute on the project. We'll likely be asking for individuals or corporate entities to contribute first by submitting patches and then elevate their status to full commitor rights. This effort will begin this summer.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;3. Gary and the RIA practice&lt;br /&gt;&lt;br /&gt;&lt;p&gt;At &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt; we don't follow the typical manager / employee hierarchy. Instead, each employee has their own career counselor. I consider it a privilege to have Gary as a counselor and mentor. It's been my pleasure to get to know and work with him on a few projects already. Even in the current economy, we're in need of additional resources for this team and others. Contact me at adamflater [at] gmail [dot] com if you're interested in finding out more about &lt;a href="http://roundarch.com/" target="_blank"&gt;Roundarch&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;So.. that's a rather lengthy source-code-less post for me.&lt;br /&gt;&lt;br /&gt;thanks for reading the update.. more to come on RIA development soon&lt;br /&gt;-adam&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1457657400340857328?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1457657400340857328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1457657400340857328' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1457657400340857328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1457657400340857328'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/05/joining-roundarch-merapi-positioning.html' title='Joining Roundarch / Merapi Positioning'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_h4sLtL2cd8A/Sf5p-M0YwFI/AAAAAAAAAHY/_uVqJD9LBj0/s72-c/ra-logo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-6029278699009929701</id><published>2009-03-07T15:52:00.007-07:00</published><updated>2009-03-07T16:05:33.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Farewell to Universal Mind</title><content type='html'>&lt;p&gt;After much deliberation, earlier this week I chose to step down from my position at Universal Mind. This was a difficult decision for me as UM has a unique collection of highly talented individuals that I've thoroughly enjoyed working with. I will truly miss counting all the great people at UM as colleagues. I leave my best wishes to the success of Universal Mind and all of it's employees as individuals. I am certain that we will continue to see amazing work from the UM team in the RIA space in both development and design. &lt;/p&gt;&lt;p&gt;It was great to work with all of you and I hope to cross paths with each of you again soon.&lt;/p&gt;&lt;br /&gt;-adam&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-6029278699009929701?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/6029278699009929701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=6029278699009929701' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6029278699009929701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6029278699009929701'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/03/farewell-to-universal-mind.html' title='Farewell to Universal Mind'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2363489955267269335</id><published>2009-02-01T17:38:00.007-07:00</published><updated>2009-02-01T18:28:31.833-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='um cairngorm extentions'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='data translator pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='cairngorm'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Cairngorm Top 5 Tips - Number 3 - The Data Translator Pattern</title><content type='html'>&lt;p&gt;Number 3 on my list of Cairngorm tips is the Data Translator pattern. I'd like to preface my explanation of the pattern with a discussion about web application domains.&lt;/p&gt;&lt;p&gt;As Flex developers we're often inclined to use server-side technologies like &lt;a target="_blank" href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"&gt;Blaze DS&lt;/a&gt;, &lt;a target="_blank" href="http://www.adobe.com/products/livecycle/dataservices/"&gt;LiveCycle DS,&lt;/a&gt; &lt;a target="_blank" href="http://www.adobe.com/products/coldfusion/"&gt;ColdFusion&lt;/a&gt;, &lt;a target="_blank" href="http://amfphp.org/"&gt;amfPHP&lt;/a&gt;, &lt;a target="_blank" href="http://code.google.com/p/rubyamf/"&gt;RubyAMF&lt;/a&gt; because of the native object transfer layers that these technologies have available. The magic in these solutions is a binary format called &lt;a target="_blank" href="http://www.jamesward.com/blog/2007/12/12/blazebench-why-you-want-amf-and-blazeds/"&gt;AMF (Action Messaging Format)&lt;/a&gt;. &lt;a target="_blank" href="http://www.jamesward.com/blog/2007/12/12/blazebench-why-you-want-amf-and-blazeds/"&gt;AMF&lt;/a&gt; allows disparate languages to communicate with native objects. For example, in a &lt;a target="_blank" href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"&gt;Blaze DS&lt;/a&gt; Java server project if I define a class that has the same public properties as a class definition in ActionScript, Java and ActionScript can transport data of this type and deal with the data as a native object instance in each layer. The benefits gained from native object data transfer are: compile time type checking, speed, and elegance. However, this post is not about &lt;a target="_blank" href="http://www.jamesward.com/blog/2007/12/12/blazebench-why-you-want-amf-and-blazeds/"&gt;AMF&lt;/a&gt;, but about the pattern of translating other data formats (like &lt;a target="_blank" href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;, &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Comma-separated_values"&gt;CSV&lt;/a&gt;, &lt;a target="_blank" href="http://en.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt;) into the Flex application domain.&lt;/p&gt;&lt;p&gt;An important distinction when implementing a Flex application is the separation of domains. In a typical web application there are several domains to think about, but for the sake of this example let's look at two: the service layer domain and the UI domain. The distinction between these domains is important to ensure high standards of maintainability and modularity. It is essential to avoid a situation where a change in the service layer has major impacts on the implementation of the UI layer, and vice versa. The Data Translator pattern is a simple pattern, but an important concept for keeping these concerns separated.&lt;/p&gt;&lt;p&gt;In this example I will be using &lt;a target="_blank" href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt; translated to ActionScript &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Data_Transfer_Object"&gt;VOs (value objects)&lt;/a&gt;. &lt;a target="_blank" href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt; is a common format in the world of web services, and especially in Flex development, however this pattern can be used with nearly any data format that a service might expose. That's enough setup, now let's dig in to the Data Translator.&lt;/p&gt;&lt;p&gt;A Data Translator is a class with static methods for parsing data generated by the service domain into a format that is specific to the UI domain. Data Translators are typically invoked by Delegate classes. In my opinion, the Delegate layer is the appropriate place to handle data translation. If your Command class is dealing with data that is part of the service domain, you may need to rethink your architecture. Like nearly everything in any field of engineering, there are exceptions to this rule. If you are implementing an application that's function is to display read-only data, &lt;a target="_blank" href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt; can be a great format for that application. However, if your application involves modifying data that was retrieved from a service, value objects are usually the best solution.&lt;/p&gt;&lt;p&gt;So, let's check out the example application:&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/DataTranslatorExampleLauncher.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SYZCQdu8LKI/AAAAAAAAAHQ/mWUkBqb7W0Q/s320/dataTranslatorExamlpleScreenshot.png" alt="" id="BLOGGER_PHOTO_ID_5297994862274817186" border="0" /&gt;&lt;/a&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/DataTranslatorExampleLauncher.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/index.html"&gt;View the Source&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/asdoc-output/index.html"&gt;View the Docs&lt;/a&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;&lt;p&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/DataTranslatorExampleApplication.mxml.html"&gt;DataTranslatorExampleApplication&lt;/a&gt; - Defines a button that dispatches the GetItemsEvent, a console to show Cairngorm actions, and a DataGrid to show the result of the operation.&lt;/p&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/DataTranslatorExampleApplication.mxml.html" style="overflow-x: hidden;" frameborder="0" height="800" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/ItemsCommand.as.html"&gt;ItemsCommand&lt;/a&gt; - Invokes the getItems operation on the delegate class and by standard Cairngorm convention, updates the global model with the items returned by the delegate.&lt;/p&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/ItemsCommand.as.html" style="overflow-x: hidden;" frameborder="0" height="840" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/DataTranslatorExampleDelegate.as.html"&gt;DataTranslatorExampleDelegate&lt;/a&gt; - This delegate is responsible for calling the service that responds with a collection of items. The items are returned in an &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/mock/items.xml.txt"&gt;XML format&lt;/a&gt; and then parsed by the &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/ExampleDataTranslator.as.html"&gt;ExampleDataTranslator&lt;/a&gt; class.&lt;/p&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/DataTranslatorExampleDelegate.as.html" style="overflow-x: hidden;" frameborder="0" height="1230" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/ExampleDataTranslator.as.html"&gt;ExampleDataTranslator&lt;/a&gt; - Translates the XML payload into a set of objects of type &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/model/vo/Item.as.html"&gt;Item&lt;/a&gt;.&lt;/p&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/ExampleDataTranslator.as.html" style="overflow-x: hidden;" frameborder="0" height="575" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/model/vo/Item.as.html"&gt;Item&lt;/a&gt; - A value object that models the data of an "Item"&lt;/p&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/model/vo/Item.as.html" style="overflow-x: hidden;" frameborder="0" height="200" width="580"&gt;&lt;/iframe&gt;&lt;p&gt;This pattern is a favorite of mine for dealing with the translation of data into a format for the UI application domain.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Up next, tip #2 Aggregated Commands.&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2363489955267269335?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2363489955267269335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2363489955267269335' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2363489955267269335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2363489955267269335'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/02/cairngorm-top-5-tips-number-3-data.html' title='Cairngorm Top 5 Tips - Number 3 - The Data Translator Pattern'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_h4sLtL2cd8A/SYZCQdu8LKI/AAAAAAAAAHQ/mWUkBqb7W0Q/s72-c/dataTranslatorExamlpleScreenshot.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-8341720980098274354</id><published>2009-01-28T10:52:00.005-07:00</published><updated>2009-01-28T13:47:51.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='typinator'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='code formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Typinator and Flex</title><content type='html'>My colleague &lt;a href="http://www.dougmccune.com/"&gt;Doug McCune&lt;/a&gt; sent out a link last week to a product called &lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt;Typinator&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.macility.com/products/typinator/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 292px; height: 370px;" src="http://www.macility.com/images/products/typi/external/typinator-screen292.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt;Typinator&lt;/a&gt; is a tool for Mac OS that auto replaces character strings that are typed anywhere in Mac OS. In the videos below you will see a few ways that &lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt;Typinator&lt;/a&gt; can be used in a Flex development environment.&lt;/p&gt;&lt;p&gt;Class Templates: If you're tired of formatting your classes to read a certain way, why not setup a template with &lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt;Typinator&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;In this example you'll see "-pc" expanded to a full class template.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hzDY6Y-iT1s&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/hzDY6Y-iT1s&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Infrequently Used Syntax: If you're like me, there are a few syntactical parts of ActionScript that you use infrequently. I generally have to look these things up in past source code or LiveDocs. &lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt;Typinator&lt;/a&gt; is a great way to create a shortcut for those items.&lt;/p&gt;&lt;p&gt;In this example you'll see "-ra" expanded into the remote alias meta data tag.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/plbqeaD9-Dg&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/plbqeaD9-Dg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In this example you'll see "-emd" expanded to the event meta data syntax.&lt;br /&gt;&lt;/p&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hhmCHdjYLko&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/object&gt;&lt;div style="text-align: center;"&gt;&lt;object height="295" width="480"&gt;&lt;embed src="http://www.youtube.com/v/hhmCHdjYLko&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="295" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;I've been using &lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt;Typinator&lt;/a&gt; for a while now and it's become a useful development tool for me, even actions as simple as correcting functino to function (a common misspelling for me).&lt;/p&gt;&lt;p&gt;[UPDATE]&lt;/p&gt;&lt;p&gt;I shared my post with Ergonis Software and their CEO and Frounder Christoph Reichenberger replied with a very helpfult tip. &lt;a target="_blank" href="http://www.macility.com/products/typinator/"&gt; Typinator&lt;/a&gt; allows you to specify an alternative cursor position after it has replaced the phrase you type.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_h4sLtL2cd8A/SYDDnovjtQI/AAAAAAAAAHI/kF1oUU0v2JE/s1600-h/Typinator.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 215px;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SYDDnovjtQI/AAAAAAAAAHI/kF1oUU0v2JE/s320/Typinator.jpg" alt="" id="BLOGGER_PHOTO_ID_5296448247506908418" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you look up at my remote alias example, you'll notice that I used the left arrow key to backup to the appropriate spot to type the classname. In the revised example below you'll see that after typing "-ra" the cursor is automatically positioned where I'd like to start typing the name of the alias.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xC8cV_UMVyw&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/xC8cV_UMVyw&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="295" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Thanks for the tip Christoph, much appreciated.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-8341720980098274354?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/8341720980098274354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=8341720980098274354' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8341720980098274354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8341720980098274354'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/01/typinator-and-flex.html' title='Typinator and Flex'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_h4sLtL2cd8A/SYDDnovjtQI/AAAAAAAAAHI/kF1oUU0v2JE/s72-c/Typinator.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-6845300832248356157</id><published>2009-01-27T14:42:00.012-07:00</published><updated>2009-02-01T18:28:13.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='um cairngorm extentions'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='eventgenerator'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='cairngorm'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Cairngorm Top 5 Tips - Number 4 - The EventGenerator</title><content type='html'>&lt;p&gt;The last tip in this series was #5. The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/AnnounceFaultEvent.html"&gt;AnnounceFaultEvent&lt;/a&gt; (&lt;a target="_blank" href="http://adamflater.blogspot.com/2009/01/cairngorm-top-5-tips-number-5.html"&gt;read more&lt;/a&gt;).&lt;/p&gt;and now for tip #4:&lt;p&gt;&lt;/p&gt;&lt;p&gt;The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html"&gt;EventGenerator&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html"&gt;EventGenerator&lt;/a&gt; class provides a mechanism for defining sets of &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/UMEvent.html"&gt;Events&lt;/a&gt; to be dispatched either &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html#TRIGGER_SEQUENCE"&gt;sequentially&lt;/a&gt; or in &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html#TRIGGER_PARALLEL"&gt;parallel&lt;/a&gt;. The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html"&gt;EventGenerator&lt;/a&gt; is defined declaratively in MXML. The generator provides an aggregated result response when the last &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/UMEvent.html"&gt;event&lt;/a&gt; in the set has finished. It is still possible to attach &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/IResponder.html"&gt;responders&lt;/a&gt; to your individual &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/UMEvent.html"&gt;events&lt;/a&gt;, as per normal in the &lt;a target="_blank" href="http://code.google.com/p/flexcairngorm/"&gt;UM Cairngorm&lt;/a&gt; world. (I'll cover the Event-Responder relationship in more detail in a later post.)&lt;/p&gt;&lt;p&gt;There are couple of dependencies to the &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html"&gt;EventGenerator&lt;/a&gt; pattern. I consider these requirements good practice anyhow, but you should keep them in mind.&lt;/p&gt;&lt;p&gt;1. Define your event as a subclass of &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/UMEvent.html"&gt;UMEvent&lt;/a&gt; not the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/control/CairngormEvent.html"&gt;Cairngorm Event Class&lt;/a&gt;&lt;br /&gt;2. Define your command as a subclass of the &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/commands/Command.html"&gt;UM Command&lt;/a&gt; class instead of implementing the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Cairngorm ICommand interface&lt;/a&gt;.&lt;br /&gt;3. Invoke super.execute() in your command execute method.&lt;br /&gt;4. Invoke notifyCallers() in your command class when the command has finished executing.&lt;/p&gt;And now for the example...&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/EventGeneratorExampleLauncher.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 166px;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SX-GRcwBSqI/AAAAAAAAAHA/odkDjBbLMxY/s320/eventGeneratorExampleScreenshot.png" alt="" id="BLOGGER_PHOTO_ID_5296099321144494754" border="0" /&gt;&lt;/a&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/EventGeneratorExampleLauncher.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/index.html"&gt;View the Source&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/asdoc-output/index.html"&gt;View the Docs&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/EventGeneratorExampleApplication.mxml.html"&gt;EventGeneratorExampleApplication&lt;/a&gt; - Defines the generators and the handlers functions for their results.&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/EventGeneratorExampleApplication.mxml.html" style="overflow-x: hidden;" frameborder="0" height="1330" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/events/GetConfigurationEvent.as.html"&gt;GetConfigurationEvent&lt;/a&gt; and &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/events/DownloadSomethingEvent.as.html"&gt;DownloadSomethingEvent&lt;/a&gt; are basic &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/UMEvent.html"&gt;Event&lt;/a&gt; classes that map to &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/ConfigurationCommand.as.html"&gt;ConfigurationCommand&lt;/a&gt; and &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/DownloadCommand.as.html"&gt;DownloadCommand&lt;/a&gt;, respectively. Both of these commands are implemented using the pattern I described in the dependency list above. Let's take a look at the  &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/ConfigurationCommand.as.html"&gt;ConfigurationCommand&lt;/a&gt; as an example.&lt;br /&gt;&lt;/p&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/ConfigurationCommand.as.html" style="overflow-x: hidden;" frameborder="0" height="750" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;As you can see, &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/ConfigurationCommand.as.html"&gt;ConfigurationCommand&lt;/a&gt; overrides the execute method and invokes the super execute method. Finally, when the delegate has returned a response notifyCaller is invoked. This is the signal the EventGenerator needs to know that the command has finished executing. If the generator is triggered as a sequential dispatcher notifyCaller() signals the generator to dispatch the next event in the series. If the generator is running in a parallel mode, notifyCaller() is used to keep a count of the event / command pairs that have finished. When all the events have signaled a finish, then the generator will dispatch the aggregated result signal.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The delegate used (&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/EventGeneratorExampleDelegate.as.html"&gt;EventGeneratorExampleDelegate&lt;/a&gt;) is fairly straight forward. It uses a URLLoader to download a couple of files from the same server that the application is deployed on.&lt;/p&gt;&lt;p&gt;Up next, #3 &lt;a href="http://adamflater.blogspot.com/2009/02/cairngorm-top-5-tips-number-3-data.html" target="_blank"&gt;Data Translators&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-6845300832248356157?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/6845300832248356157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=6845300832248356157' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6845300832248356157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6845300832248356157'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/01/cairngorm-top-5-tips-number-4.html' title='Cairngorm Top 5 Tips - Number 4 - The EventGenerator'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_h4sLtL2cd8A/SX-GRcwBSqI/AAAAAAAAAHA/odkDjBbLMxY/s72-c/eventGeneratorExampleScreenshot.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3113343825803486820</id><published>2009-01-26T14:33:00.015-07:00</published><updated>2009-01-27T15:41:11.038-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='um cairngorm extentions'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='cairngorm'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='fault handling'/><title type='text'>Cairngorm Top 5 Tips - Number 5 - The AnnounceFaultEvent</title><content type='html'>&lt;p&gt;Several months ago we had a Flex Frameworks roundup at our local Adobe User Group (&lt;a target="_blank" href="http://www.rmaug.com/"&gt;RMAUG&lt;/a&gt;). I presented on the &lt;a target="_blank" href="http://code.google.com/p/flexcairngorm/"&gt;Universal Mind Extensions to Cairngorm&lt;/a&gt; and have since had a few requests for more info on the extensions. In this post I will explain my top 5 favorite ways to implement Cairngorm features in a Flash Application built with Flex many including elements from the &lt;a target="_blank" href="http://code.google.com/p/flexcairngorm/"&gt;UM Extensions&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So, without further delay...&lt;/p&gt;&lt;p&gt;5. The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/AnnounceFaultEvent.html"&gt;AnnounceFaultEvent&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Error handling can often be an overlooked item when building a Flex application. The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/AnnounceFaultEvent.html"&gt;AnnounceFaultEvent&lt;/a&gt; class in the &lt;a target="_blank" href="http://code.google.com/p/flexcairngorm/"&gt;UM Cairngorm Extensions&lt;/a&gt; provides a nice way to generically handle faults. In fact, the UM implementation of &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/commands/Command.html"&gt;Command&lt;/a&gt; has built-in support for the &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/AnnounceFaultEvent.html"&gt;AnnounceFaultEvent&lt;/a&gt;. If a &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/events/FaultEvent.html"&gt;FaultEvent&lt;/a&gt; is passed to the fault method of the Command (via the &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/IResponder.html"&gt;IResponder&lt;/a&gt; interface), an &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/AnnounceFaultEvent.html"&gt;AnnounceFaultEvent&lt;/a&gt; is automatically dispatched through the &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/control/FrontController.html"&gt;FrontController&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;In a standard &lt;a target="_blank" href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm"&gt;Cairngorm&lt;/a&gt; implementation a &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt; instantiates a &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/business/Delegate.html"&gt;Delegate&lt;/a&gt; and invokes a method on that &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/business/Delegate.html"&gt;Delegate&lt;/a&gt; to perform the action that the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt; is responsible for. Typically, the &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/business/Delegate.html"&gt;Delegate&lt;/a&gt; will inform the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt;  that either a result returned form the operation or a fault returned from the operation. Because Flex is based on asynchronous communication the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt;'s call to the &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/business/Delegate.html"&gt;Delegate&lt;/a&gt; cannot be blocking (ie wait for a response). So, we need a way to signal to the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt; that the operation has finished and deliver the result (or fault) of the operation. The common way to accomplish this task is using the &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/IResponder.html"&gt;Responder&lt;/a&gt; pattern. A &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/IResponder.html"&gt;Responder&lt;/a&gt; is a class of object that has both a result and a fault method. The idea is that a caller maintains a reference to the &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/IResponder.html"&gt;Responder&lt;/a&gt; instantiation, and the callee notifies the caller via this object. In the &lt;a target="_blank" href="http://code.google.com/p/flexcairngorm/"&gt;UM Extensions&lt;/a&gt;, the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt; class will automatically fire an &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/AnnounceFaultEvent.html"&gt;AnnounceFaultEvent&lt;/a&gt; when a &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/business/Delegate.html"&gt;Delegate&lt;/a&gt; passes back a &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/events/FaultEvent.html"&gt;FaultEvent&lt;/a&gt; to the &lt;a target="_blank" href="http://cairngormdocs.org/docs/cairngorm_2_1/com/adobe/cairngorm/commands/ICommand.html"&gt;Command&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Here's the example:&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/AnnounceFaultEventExampleLauncher.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 212px;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SX4vfzzL8CI/AAAAAAAAAG4/WIEeC0vDEC8/s320/announceFaultExampleScreenshot.png" alt="" id="BLOGGER_PHOTO_ID_5295722435361632290" border="0" /&gt;&lt;/a&gt;&lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/AnnounceFaultEventExampleLauncher.html"&gt;View the Application&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/index.html"&gt;View the Source&lt;/a&gt; | &lt;a target="_blank" href="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/asdoc-output/index.html"&gt;View the Docs&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;AnnounceFaultEventExampleApplication dispatches a AnnounceFaultEventExampleEvent&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/AnnounceFaultEventExampleApplication.as.html" style="overflow-x: hidden;" frameborder="0" height="1230" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;AnnounceFaultEventExampleEvent is handled by CairngormTipsFrontController&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/events/AnnounceFaultEventExampleEvent.as.html" style="overflow-x: hidden;" frameborder="0" height="450" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;CairngormTipsFrontController instantiates AnnounceFaultEventExampleCommand&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/CairngormTipsFrontController.as.html" style="overflow-x: hidden;" frameborder="0" height="650" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;AnnounceFaultEventExampleCommand calls exampleOperation on AnnounceFaultEventExampleDelegate&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/AnnounceFaultEventExampleCommand.as.html" style="overflow-x: hidden;" frameborder="0" height="800" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;AnnounceFaultEventExampleDelegate responds with a FaultEvent&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/delegates/AnnounceFaultEventExampleDelegate.as.html" style="overflow-x: hidden;" frameborder="0" height="650" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;The FaultEvent is handled by FaultCommand&lt;br /&gt;&lt;iframe src="http://flatersource.googlecode.com/svn/trunk/BlogSamples/20090126-CairngormTips/bin-release/srcview/source/flater/cairngormtips/controller/commands/FaultCommand.as.html" style="overflow-x: hidden;" frameborder="0" height="610" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tip #4: The &lt;a target="_blank" href="http://flexcairngorm.googlecode.com/svn/trunk/code/asdocs/com/universalmind/cairngorm/events/generator/EventGenerator.html"&gt;EventGenerator&lt;/a&gt; &lt;strike&gt;is coming soon...&lt;/strike&gt; &lt;a href="http://adamflater.blogspot.com/2009/01/cairngorm-top-5-tips-number-4.html"&gt;It's out now&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3113343825803486820?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3113343825803486820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3113343825803486820' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3113343825803486820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3113343825803486820'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/01/cairngorm-top-5-tips-number-5.html' title='Cairngorm Top 5 Tips - Number 5 - The AnnounceFaultEvent'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_h4sLtL2cd8A/SX4vfzzL8CI/AAAAAAAAAG4/WIEeC0vDEC8/s72-c/announceFaultExampleScreenshot.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1024618561868271254</id><published>2009-01-18T23:39:00.015-07:00</published><updated>2009-01-19T01:02:24.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Degrafa'/><title type='text'>Dynamic, Persistent Skins with Degrafa</title><content type='html'>&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.degrafa.org/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 82px;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/SXQgtQoZBoI/AAAAAAAAAGQ/l-UNVuGQkno/s320/degrafa.png" alt="" id="BLOGGER_PHOTO_ID_5292891423997757058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.degrafa.org/"&gt;Degrafa&lt;/a&gt; is a declarative graphics framework for Flex. This means that programatic graphic instructions like:&lt;/p&gt;&lt;pre&gt;graphics.lineStyle( 1, 0xffffff );&lt;br /&gt;graphics.moveTo( 10, 10 );&lt;br /&gt;graphics.lineTo( 30, 30 );&lt;br /&gt;graphics.lineTo( 10, 30 );&lt;/pre&gt;&lt;p&gt;can be expressed in simplified and elegant MXML source code.&lt;/p&gt;&lt;p&gt;From this post you'll take away an intro to &lt;a target="_blank" href="http://www.degrafa.org/"&gt;Degrafa&lt;/a&gt;, how to dynamically modify your &lt;a target="_blank" href="http://www.degrafa.org/"&gt;Degrafa&lt;/a&gt; skins, and how to persist those dynamically modified skins.&lt;/p&gt;&lt;p&gt;To start with, let's take a look at a simple Flex Button skinned using Degrafa:&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/degrafa-post/ButtonSkinExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 94px;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SXQhV5cwxPI/AAAAAAAAAGg/SX4MNJckrXQ/s320/exampleButton.png" alt="" id="BLOGGER_PHOTO_ID_5292892122149602546" border="0" /&gt;&lt;/a&gt;&lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/ButtonSkinExample.html"&gt;View Application&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;In this example I'm using three Degrafa classes: &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/skins/GraphicBorderSkin.html"&gt;GraphicBorderSkin&lt;/a&gt;, &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/paint/SolidFill.html"&gt;SolidFill&lt;/a&gt;, and &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/geometry/RoundedRectangle.html"&gt;RoundedRectangle&lt;/a&gt; to create the skin:&lt;br /&gt;&lt;/p&gt;ButtonSkin.mxml&lt;br /&gt;&lt;iframe src="http://adamflater.net/blogassets/degrafa-post/srcview/source/flater/blogsamples/degrafabutton/skins/ButtonSkin.mxml.html" frameborder="0" height="425" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;Then, that skin is applied to a Flex Button in:&lt;br /&gt;&lt;br /&gt;ButtonSkinExample.mxml&lt;br /&gt;&lt;p&gt;&lt;iframe src="http://adamflater.net/blogassets/degrafa-post/srcview/source/ButtonSkinExample.mxml.html" frameborder="0" height="200" width="580"&gt;&lt;/iframe&gt;&lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/skins/GraphicBorderSkin.html"&gt;GraphicBorderSkin&lt;/a&gt; is one of a few classes that implement the &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/core/IGraphicSkin.html"&gt;IGraphicSkin&lt;/a&gt; interface. These classes are the foundation for a Degrafa skin. Extensions of &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/core/IGraphicSkin.html"&gt;IGraphicSkin&lt;/a&gt; classes are typically written in MXML. For this example I've extended &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/skins/GraphicBorderSkin.html"&gt;GraphicBorderSkin&lt;/a&gt; to add a few bindable properties for width and height. If you're interested in that implementation, take a look at the &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/source/flater/blogsamples/degrafabutton/skins/BaseGraphicBorderSkin.as.html"&gt;BaseGraphicBorderSkin&lt;/a&gt; in the source code.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/paint/SolidFill.html"&gt;SolidFill&lt;/a&gt; is fairly self descriptive. As you can imagine, it fills an area with a color. &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/paint/SolidFill.html"&gt;SolidFill&lt;/a&gt; may also have an &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/paint/SolidFill.html#alpha"&gt;alpha&lt;/a&gt; quality.&lt;/p&gt;&lt;p&gt;Finally, the shape of our skin is implemented using the class &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/geometry/RoundedRectangle.html"&gt;RoundedRectangle&lt;/a&gt;. &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/geometry/RoundedRectangle.html"&gt;RoundedRectangle&lt;/a&gt; implements the &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/IGeometry.html"&gt;IGeometry&lt;/a&gt; interface, the classes used in the &lt;geometry&gt; tag to draw the shapes of the skin. In our example there are 3 &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/geometry/RoundedRectangle.html"&gt;RoundedRectangles&lt;/a&gt;, each with increasingly more rounded corners. Each of these three shapes map to three states of the Flex Button; upSkin, overSkin, and downSkin. These shapes are filled using their respective &lt;a target="_blank" href="http://www.degrafa.org/docs/com/degrafa/paint/SolidFill.html"&gt;SolidFill&lt;/a&gt; instances upFill, overFill, and downFill.&lt;/geometry&gt;&lt;/p&gt;&lt;p&gt;With just a little extra work we can make this skin dynamically configurable. The first step is to create a model to externalize the data of the skin. Our data model includes 9 properties:&lt;br /&gt;&lt;/p&gt;&lt;iframe src="http://adamflater.net/blogassets/degrafa-post/DataProps.html" frameborder="0" height="180" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;This class is called &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/source/flater/blogsamples/degrafabutton/skins/ButtonDynamicSkinData.as.html"&gt;ButtonDynamicSkinData&lt;/a&gt;. The next step is to have our skin bind to the values set in &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/source/flater/blogsamples/degrafabutton/skins/ButtonDynamicSkinData.as.html"&gt;ButtonDynamicSkinData&lt;/a&gt;. You can view this in the &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/source/flater/blogsamples/degrafabutton/skins/ButtonDynamicSkin.mxml.html"&gt;ButtonDynamicSkin&lt;/a&gt; class:&lt;/p&gt;&lt;p&gt;The final step is to create a few controls to modify the values in the model. I've added these controls to the Application class &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/source/ButtonSkinDynamicExample.mxml.html"&gt;ButtonSkinDynamicExample&lt;/a&gt;... and voila:&lt;/p&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/degrafa-post/ButtonSkinDynamicExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 209px;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/SXQqIzpfmwI/AAAAAAAAAGo/ClIGX8yevq8/s320/exampleButtonDynamic.png" alt="" id="BLOGGER_PHOTO_ID_5292901792858741506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/ButtonSkinDynamicExample.html"&gt;View Application&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;geometry&gt;&lt;p&gt;The final step is to persist this data and load it at a later instantiation of the skin. There are many ways to persist data in Flex. For this example I've used the simple approach of persisting the data via url encoded variables. In the final example a button labeled "Goto New URL" is added. If you modify the settings of the skin and then click the button, a new instance of the application loads with the persistent skin that was modified.&lt;/p&gt;&lt;p&gt;To facilitate the persistence I've added two methods to the class &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/source/flater/blogsamples/degrafabutton/skins/ButtonDynamicPersistentSkinData.as.html"&gt;ButtonDynamicPersistentSkinData&lt;/a&gt;. The method toUrlVariables() expresses the data model as &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/flash/net/URLVariables.html"&gt;URLVariables&lt;/a&gt; and the setValues() method sets each property of the model based on the values of the &lt;a target="_blank" href="http://livedocs.adobe.com/flex/3/langref/flash/net/URLVariables.html"&gt;URLVariables&lt;/a&gt; method parameter.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/degrafa-post/ButtonSkinDynamicPersistentExample.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SXQq58zgujI/AAAAAAAAAGw/K_L5gfZtiB0/s320/exampleButtonDynamicPersistent.png" alt="" id="BLOGGER_PHOTO_ID_5292902637130267186" border="0" /&gt;&lt;/a&gt;&lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/ButtonSkinDynamicPersistentExample.html"&gt;View Application&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;geometry&gt;&lt;p&gt;This example shows a method for implementing a fully dynamic and persistent skinned Flex application.&lt;/p&gt;The source for the examples in the post can be found &lt;a target="_blank" href="http://adamflater.net/blogassets/degrafa-post/srcview/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More links:&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://degrafa.org/samples/"&gt;Degrafa Samples&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://degrafa.org/code/"&gt;Degrafa Downloads&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://degrafa.org/docs/"&gt;Degrafa Docs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://degrafa.org/docs/"&gt;&lt;/a&gt;&lt;p&gt;This post is a result of recently using &lt;a target="_blank" href="http://www.degrafa.org/"&gt;Degrafa&lt;/a&gt; to implement similar features on a project I was working on. I was very pleased with how rapid the development process was, as well as the opportunity it gave for an elegant skinning solution. &lt;a target="_blank" href="http://www.degrafa.org/"&gt;Degrafa&lt;/a&gt; comes highly recommended by me for any Flex project.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/geometry&gt;&lt;/geometry&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1024618561868271254?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1024618561868271254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1024618561868271254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1024618561868271254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1024618561868271254'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/01/dynamic-persistent-skins-with-degrafa.html' title='Dynamic, Persistent Skins with Degrafa'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_h4sLtL2cd8A/SXQgtQoZBoI/AAAAAAAAAGQ/l-UNVuGQkno/s72-c/degrafa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-8793023585955248992</id><published>2009-01-11T22:43:00.012-07:00</published><updated>2009-01-11T23:23:44.690-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='outlook'/><category scheme='http://www.blogger.com/atom/ns#' term='360flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='flexcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='cocomo'/><title type='text'>Merapi Update</title><content type='html'>&lt;p&gt;It has been far too long since I've blogged about Merapi, so I thought I would share what's up with the project. First off, the next release has been coming soon for far too long. That is my responsibility and I apologize to everyone that's been waiting on the new build. However, there is good news! The new release is now live on the site. Go to &lt;a target="_blank" href="http://www.merapiproject.net/"&gt;www.merapiproject.net&lt;/a&gt; and check it out. You can sign up for an account if you aren't already.&lt;/p&gt;&lt;p&gt;It's really great to see the Flex community cranking out cool examples with a technology that you've created. This is most definitely the case with the recent “Cocomo ready” Air Wiibot. These guys mashed up &lt;a target="_blank" href="http://labs.adobe.com/technologies/cocomo/"&gt;Cocmo&lt;/a&gt;, &lt;a target="_blank" href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt;, and &lt;a target="_blank" href="http://www.merapiproject.net/"&gt;Merapi&lt;/a&gt; to control a &lt;a target="_blank" href="http://mindstorms.lego.com/eng/LW_dest/Default.aspx"&gt;Lego Mindstorm&lt;/a&gt; robot with a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Wii_Remote"&gt;Wiimote&lt;/a&gt;. So what's &lt;a target="_blank" href="http://labs.adobe.com/technologies/cocomo/"&gt;Cocmo&lt;/a&gt; for? They've used &lt;a target="_blank" href="http://labs.adobe.com/technologies/cocomo/"&gt;Cocomo&lt;/a&gt; for live video conferencing as well as the ability to control the robot remotely. So, if my friend &lt;a target="_blank" href="http://jordansnyder.com/blog/"&gt;Jordan&lt;/a&gt; happened to have &lt;a target="_blank" href="http://www.youtube.com/watch?v=vji4rPkfnr8"&gt;Nathan (our Lego Mindstorm robot)&lt;/a&gt; at her house, I could fire up this app at my house and control Nathan remotely using a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Wii_Remote"&gt;Wiimote&lt;/a&gt;... really cool stuff. Here's the YouTube video:&lt;/p&gt;&lt;p&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wJuNVgshSDI&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=fr&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/wJuNVgshSDI&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=fr&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MAX Recap&lt;/p&gt;&lt;p&gt;For those of you that missed &lt;a target="_blank" href="http://max.adobe.com/"&gt;MAX&lt;/a&gt; there was a lot of Merapi action, here's a quick recap.&lt;/p&gt;&lt;p&gt;First off, &lt;a target="_blank" href="http://flex.org/tour"&gt;Tour De Flex&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://flex.org/files/Screenshot_0.png" alt="" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://flex.org/tour"&gt;Tour De Flex&lt;/a&gt; is an application created by Adobe used to explore components in the Flex community. Adobe used Merapi to connect the Eclipse plugin portion of the application to the Tour De Flex AIR application. You can get Tour De Flex at: &lt;a target="_blank" href="http://flex.org/tour"&gt;http://flex.org/tour&lt;/a&gt; and read more about the Merapi integration on Holly Schinsky's blog here: &lt;a target="_blank" href="http://devgirl.wordpress.com/2008/11/13/flexair-to-java-communication-using-merapi/"&gt;Flex/AIR to Java Communication Using Merapi&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Moving right along... There were a few new demos and a couple of Merapi announcements at the sessions we gave at &lt;a target="_blank" href="http://www.360conferences.com/max/"&gt;360 | MAX&lt;/a&gt;. One of the first demos I showed was Outlook integration. Here's the YouTube video:&lt;/p&gt;&lt;p&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qNObVQodOBM&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/qNObVQodOBM&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;The next new demo was Excel integration. If you pay attention to the video on this one you will notice one of the announcements we made at MAX, Merapi is now in the browser! In this demo you will see a Flex browser application interact with Excel:&lt;/p&gt;&lt;p&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RyIRSbwNIGc&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/RyIRSbwNIGc&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="295" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;Thanks again to &lt;a target="_blank" href="http://www.universalmind.com/"&gt;Universal Mind&lt;/a&gt; and &lt;a target="_blank" href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; for supporting me at MAX.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Coming up...&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.flexcampchicago.com/"&gt;FlexCamp Chicago&lt;/a&gt; 1/23, &lt;a target="_blank" href="http://www.flexcampoc.com/"&gt;FlexCamp OC&lt;/a&gt; 1/31, and &lt;a target="_blank" href="http://www.360conferences.com/360flex/"&gt;360 Flex | Indy&lt;/a&gt; 5/18-20 (probably)&lt;/p&gt;&lt;p&gt;I'll be presenting at each of these conferences (assuming &lt;a target="_blank" href="http://lordbron.wordpress.com/"&gt;Tom&lt;/a&gt; and &lt;a target="_blank" href="http://johnwilker.com/"&gt;John&lt;/a&gt; let me in again.. they have yet to announce speakers) ;)&lt;/p&gt;&lt;p&gt;There will be some especially interesting announcements at &lt;a target="_blank" href="http://www.flexcampchicago.com/"&gt;FlexCamp Chicago&lt;/a&gt;. Make sure you turn out if possible, otherwise, watch the blogosphere for the recap.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Thanks to everyone who has been using Merapi and giving us feedback on the framework. The creativity, ingenuity, support, and patience from the community has been excellent.&lt;/p&gt;&lt;p&gt;Enjoy the new release!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-8793023585955248992?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/8793023585955248992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=8793023585955248992' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8793023585955248992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8793023585955248992'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/01/merapi-update.html' title='Merapi Update'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-537444113837080758</id><published>2009-01-05T13:47:00.011-07:00</published><updated>2009-01-05T14:20:51.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brightkite'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='rich internet application'/><title type='text'>The Brightkite Wall</title><content type='html'>&lt;p&gt;In late 2008 &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; engaged &lt;a href='http://www.UniversalMind.com' target='_blank'&gt;Universal Mind&lt;/a&gt; to develop an application called &lt;a href="http://brightkite.com/wall" target="_blank"&gt;The Brightkite Wall&lt;/a&gt;. The Wall is a &lt;a href='http://tryit.adobe.com/us/cs4/flash/index.html?sdid=DOPXU' target='_blank'&gt;Flash&lt;/a&gt; Application built using &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt;. &lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_h4sLtL2cd8A/SWJyYciIrUI/AAAAAAAAAGI/eDtBEefY_K4/s1600-h/TheWall.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 261px;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SWJyYciIrUI/AAAAAAAAAGI/eDtBEefY_K4/s320/TheWall.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5287914676788178242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;For those of you unfamiliar with &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt;, here's a quick overview:&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; is a location based, micro-blogging, social networking platform. Unless you've been living in a cave for the last five years, you're probably familiar with sites like &lt;a href='http://www.myspace.com' target='_blank'&gt;MySpace&lt;/a&gt; and &lt;a href='http://www.Facebook.com' target='_blank'&gt;Facebook&lt;/a&gt;. One of the features of these sites is something called a status. The status you set is meant to reflect something about your mood, or what you're up to, i.e.. "Adam is writing a blog post". This concept is similar to an away message on an instant messenger account. The first site to gain traction as a platform that specializes in status updates was &lt;a href='http://www.Twitter.com' target='_blank'&gt;Twitter&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; retains the idea of status updates and friending other &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; users, but adds the concept of a "check in". When you "check in" in &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; you're saying where you are, geographically speaking. So, status updates (called notes in &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt;) are posted from a place. This means these notes often have an annotative quality about the place where the user is checked in. &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; users also have the option of posting photos at a &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; location. There are a lot more features in the &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; platform including: an iPhone application, a mobile site, and integration with other social networking platforms: &lt;a href='http://www.Facebook.com' target='_blank'&gt;Facebook&lt;/a&gt;, &lt;a href='http://www.Twitter.com' target='_blank'&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt;, and &lt;a href="http://fireeagle.yahoo.net/"&gt;Fire Eagle&lt;/a&gt;. To find out more about &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; sign up for your free account at: &lt;a href='http://www.brightkite.com' target='_blank'&gt;www.Brightkite.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://brightkite.com/wall" target="_blank"&gt;The Brightkite Wall&lt;/a&gt; is a kiosk-style application that provides a feed form a place, a person, or for search terms in the &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; ecosystem. The application was built using Adobe's &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt; 3 Framework for building &lt;a href='http://tryit.adobe.com/us/cs4/flash/index.html?sdid=DOPXU' target='_blank'&gt;Flash&lt;/a&gt; Rich Internet Applications. &lt;/p&gt;&lt;p&gt;One development challenge we faced was to implement a user interface that scaled in size regardless of the resolution of the display it was running on. Because the Wall can be launched on any machine, those machines might have a display like a small laptop screen or up to a large projection display. The Wall user interface needed to scale appropriately for each use case. This means fonts, images, and skins all need to look, relatively, the same one any given display size. Although this feature isn't extremely difficult technically, it is a bit tricky. However, &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt; does offer some advantages when it comes to implementing a UI like the Wall.&lt;/p&gt;&lt;p&gt;Another challenge was implementing an application that would execute in a full screen mode and reliably for a long period of time. To achieve this requirement we implemented a "BoundedList" UI class that automatically disposes of unused list items, but also allows for various transition effects to be applied as new items appear in the lists. &lt;/p&gt;&lt;p&gt;The data source for the wall is the &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; RSS feed. The application is parameterized to allow for dynamic configuration (on launch), of the RSS feed, polling rate, &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; place, and the size of the bounded lists. The parameters are passed using &lt;a href='http://tryit.adobe.com/us/cs4/flash/index.html?sdid=DOPXU' target='_blank'&gt;Flash&lt;/a&gt; variables and accessed on the initialization of the application.&lt;/p&gt;&lt;p&gt;Although &lt;a href="http://brightkite.com/wall" target="_blank"&gt;The Brightkite Wall&lt;/a&gt; is a fairly simple &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt; application, built in just a few weeks, it is a great example of how &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt; can fit into a platform. Many companies rely on &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt; for their entire product line, and it is often a great choice for many products. In the case of &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt;, they had a specific problem to solve and &lt;a href='http://www.adobe.com/products/flex/' target='_blank'&gt;Flex&lt;/a&gt; happened to provide an excellent solution for the problem. &lt;/p&gt;&lt;p&gt;The Wall is still in beta and &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; needs your feedback on the kinds of features you'd like to see in the next version.&lt;/p&gt;&lt;p&gt;The &lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; blog: &lt;a href='http://blog.brightkite.com'&gt;http://blog.brightkite.com&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.brightkite.com' target='_blank'&gt;Brightkite&lt;/a&gt; on &lt;a href='http://www.Twitter.com' target='_blank'&gt;Twitter&lt;/a&gt;: &lt;a href='http://www.twitter.com/brightkite' target='_blank'&gt;http://www.twitter.com/brightkite&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-537444113837080758?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/537444113837080758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=537444113837080758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/537444113837080758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/537444113837080758'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2009/01/brightkite-wall.html' title='The Brightkite Wall'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_h4sLtL2cd8A/SWJyYciIrUI/AAAAAAAAAGI/eDtBEefY_K4/s72-c/TheWall.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3778731638813465899</id><published>2008-11-12T11:29:00.014-07:00</published><updated>2008-11-14T08:22:02.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe max'/><category scheme='http://www.blogger.com/atom/ns#' term='nasdaq market replay'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Adobe MAX 2008</title><content type='html'>&lt;p&gt;Monday, November 17th marks the official start to this year's &lt;a href="http://max.adobe.com/" target="_blank"&gt;Adobe MAX&lt;/a&gt; conference. I wanted to give a quick update on where I'll be and what I'll be up to at &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt;. So, here it is.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;First of all, at &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt; you can follow me on &lt;a href="http://twitter.com/adamflater" target="_blank"&gt;Twitter&lt;/a&gt; or &lt;a href="http://www.brightkite.com/people/adamflater" target="_blank"&gt;BrightKite&lt;/a&gt; my handle is "adamflater" on both. By the way, the &lt;a href="http://www.brightkite.com/" target="_blank"&gt;BrightKite&lt;/a&gt; guys were cool enough to setup a placemark for &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt;. The placemark is "&lt;a href="http://brightkite.com/places/ccf7307c901011dd84c3003048c0801e" target="_blank"&gt;max2008&lt;/a&gt;". That's a valid placemark for checking in and posting your notes and photos while at &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Aside from my scheduled events you'll also find me at the &lt;a href="http://www.universalmind.com/" target="_blank"&gt;Universal Mind&lt;/a&gt; booth throughout the conference. We'll be demoing all of the apps we've been hard at work on in the past year, including our GIS / Data Visualization product: &lt;a href="http://www.spatialkey.com/" target="_blank"&gt;SpatialKey&lt;/a&gt;, and the &lt;a href="http://adobemax08.com/na/experience/#?s=5&amp;amp;p=3" target="_blank"&gt;MAX Award Finalist&lt;/a&gt; &lt;a href="https://data.nasdaq.com/MR.aspx" target="_blank"&gt;NASDAQ Market Replay&lt;/a&gt;. &lt;a href="https://data.nasdaq.com/MR.aspx" target="_blank"&gt;Market Replay&lt;/a&gt; is an application that I had the pleasure of working on with the &lt;a href="http://www.nasdaq.com/" target="_blank"&gt;NASDAQ&lt;/a&gt; team. Please vote:&lt;br /&gt;&lt;a href="http://tinyurl.com/3fk6ng" target="_blank"&gt;&lt;img src="http://adamflater.net/blogassets/nasdaq/MarketReplayBanner.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The partner booths will be located at: Moscone West, Level 1.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;My Schedule:&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;Speaker Dinner&lt;br /&gt;When: Sunday, November 16th&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'll be participating in several sessions at &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt; and also attending the annual speaker dinner. I hope to see all the familiar faces as well as meet many of the other great folks in the Adobe community I have yet to become acquainted with.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;a href="http://max.adobe.com/na/sessions/browser/#853" target="_blank"&gt;Adobe AIR++&lt;/a&gt;&lt;br /&gt;When: Monday, November 17th, 11:30 am - 12:30 pm&lt;br /&gt;Where: Moscone West 2000&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is a session I'll just be attending. &lt;a href="http://www.cynergysystems.com/blogs/page/andrewtrice?entry=want_to_see_some_cool" target="_blank"&gt;Andrew Trice&lt;/a&gt; has been doing some cool stuff with &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt; and I definitely want to check it out. I'll only be able to attend part of the session due to the &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt; session directly following this one. Andrew, we'll save you the last demo spot at &lt;a href="http://www.360flex.com/max/" target="_blank"&gt;360 | MAX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;a href="http://360max.wikispaces.com/Schedule" target="_blank"&gt;Merapi at 360 | MAX&lt;/a&gt;&lt;br /&gt;When: Monday, November 17th, 12:30 pm - 2:00 pm&lt;br /&gt;Where: Moscone West, Level 2&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://johnwilker.com/" target="_blank"&gt;John&lt;/a&gt; and &lt;a href="http://lordbron.wordpress.com/" target="_blank"&gt;Tom&lt;/a&gt;, the men behind &lt;a href="http://360conferences.com/" target="_blank"&gt;360 | Conferences&lt;/a&gt;, have always been extremely gracious about letting me speak at their events. This year they are hosting an unconference at &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt;. The unconference will feature advanced Flex and AIR topics.&lt;br /&gt;&lt;br /&gt;At the last &lt;a href="http://www.360flex.com" target="_blank"&gt;360 Flex&lt;/a&gt; conference in &lt;a href="http://www.360conferences.com/360flex/2008/04/360flex-san-jose-schedule.html" target="_blank"&gt;San Jose&lt;/a&gt; my friend &lt;a href="http://jordansnyder.com/" target="_blank"&gt;Jordan&lt;/a&gt; and I presented on &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt;. We showed an &lt;a href="http://www.youtube.com/watch?v=vji4rPkfnr8" target="_blank"&gt;AIR application&lt;/a&gt; controlling a &lt;a href="http://www.youtube.com/watch?v=vji4rPkfnr8" target="_blank"&gt;Lego Mindstorm Robot&lt;/a&gt; in real time. At both of our &lt;a href="http://www.360flex.com/max/" target="_blank"&gt;360 | MAX&lt;/a&gt; sessions we're going to have a lot of people from the community present the &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt; applications they've been working on. You can count on seeing some pretty cool stuff from: &lt;a href="http://www.whatanexperience.org/" target="_blank"&gt;Dave Meeker&lt;/a&gt;, &lt;a href="http://www.infoaccelerator.net/" target="_blank"&gt;Andrew Powell&lt;/a&gt;, &lt;a href="http://www.cynergysystems.com/blogs/page/andrewtrice?entry=want_to_see_some_cool" target="_blank"&gt;Andrew Trice&lt;/a&gt;, &lt;a href="http://devgirl.wordpress.com/" target="_blank"&gt;Holly Schinsky&lt;/a&gt;, &lt;a href="http://www.merhl.com/" target="_blank"&gt;Joe Johnston&lt;/a&gt;, and me. We'll be demoing AIR apps that integrate with GPS, RFID, Eclipse, Oracle, Outlook, Growl, MacBook sensors, and of course Legos.&lt;br /&gt;&lt;br /&gt;You won't want to miss these &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt; events and that's why we have three of them.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;a href="http://max.adobe.com/na/experience/#?s=1&amp;amp;p=2" target="_blank"&gt;MAX Birds-of-a-Feather (BOFs)&lt;/a&gt;&lt;br /&gt;When: Monday, November 17th, 8:30 pm -10:20 pm&lt;br /&gt;Where: Moscone West, Level 2&lt;p&gt;&lt;/p&gt;&lt;p&gt;I'll be participating in two BOFs on Monday night: &lt;a href="http://www.insideria.com/2008/11/air-gone-wild---check-out-next.html" target="_blank"&gt;AIR Gone Wild&lt;/a&gt; and the &lt;a href="http://quickbase.intuit.com/" target="_blank"&gt;Intuit Quickbase Platform&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.insideria.com/2008/11/air-gone-wild---check-out-next.html" target="_blank"&gt;AIR Gone Wild&lt;/a&gt; is a BOF hosted by &lt;a href="http://gregsramblings.com/" target="_blank"&gt;Greg Wilson&lt;/a&gt; from Adobe. We'll be showing more of our &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt; goodness at this BOF. If there's a question you don't have the chance to ask in a session this BOF is a great place to come and ask it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.intuit.com/"&gt;Intuit&lt;/a&gt; has a new platform geared towards Flex. It's called &lt;a href="http://quickbase.intuit.com/" target="_blank"&gt;Quickbase&lt;/a&gt; and it's an interesting take on cloud computing. I had the opportunity to work with the platform on one project and I highly recommend checking these guys out.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;a href="http://360max.wikispaces.com/Schedule" target="_blank"&gt;Merapi at 360 | MAX&lt;/a&gt;&lt;br /&gt;When: Tuesday, November 18th, 12:00 pm - 2:00 pm&lt;br /&gt;Where: Moscone West, Level 2&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In our second &lt;a href="http://www.merapiproject.net" target="_blank"&gt;Merapi&lt;/a&gt; session at &lt;a href="http://www.360flex.com/max/" target="_blank"&gt;360 | MAX&lt;/a&gt; we'll cover anything we didn't have time for in the previous day as well as demo all the cool stuff from the previous sessions. Conferences tend to be a place where a lot of people crank on cool ideas they have. So, you never know, a new app might pop up between Monday and Tuesday they we'll demo during this session.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;a href="http://max.adobe.com/na/sessions/browser/#840" target="_blank"&gt;InsideRIA Outlook, 2009: What Every Developer Needs to Be Thinking About&lt;/a&gt;&lt;br /&gt;When: Wednesday, November 19th, 11:00 am - 12:00 pm&lt;br /&gt;Where: Moscone West, Room 2009&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.oreillynet.com/pub/au/3426" target="_blank"&gt;Rich Tretola&lt;/a&gt;, community manager of &lt;a href="http://www.InsideRIA.com" target="_blank"&gt;InsideRIA.com&lt;/a&gt; is hosting this session. This will be a panel format where each of the presenters brings their ideas on the future of RIAs. I'm pretty excited for this one, panel discussion are some of the most valuable aspects of any great conference.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;a href="http://max.adobe.com/na/sessions/browser/#638" target="_blank"&gt;Introduction to Flex Builder 3&lt;/a&gt;&lt;br /&gt;When: Wednesday, November 19th, 2:00pm - 3:00 pm&lt;br /&gt;Where: Moscone West, Room 2005&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This will be a great session for those of you just getting starting or thinking about jumping into &lt;a href="http://www.adobe.com/products/flex/" target="_blank"&gt;Flex&lt;/a&gt; development. I'll be covering all the basics of the &lt;a href="http://www.adobe.com/products/flex/features/flex_builder/" target="_blank"&gt;Flex IDE&lt;/a&gt; as well as an overview of what &lt;a href="http://www.adobe.com/products/flex/" target="_blank"&gt;Flex&lt;/a&gt; is as a whole. In my source code demos I'll be integrating a &lt;a href="http://www.adobe.com/products/flex/" target="_blank"&gt;Flex&lt;/a&gt; app with &lt;a href="http://www.brightkite.com" target="_blank"&gt;BrightKite&lt;/a&gt;, the site I mentioned earlier in the post, to show you how easy it is to consume data in &lt;a href="http://www.adobe.com/products/flex/" target="_blank"&gt;Flex&lt;/a&gt;. I'm looking forward to great questions at this session. It's always interesting to find out what people need to know about &lt;a href="http://www.adobe.com/products/flex/" target="_blank"&gt;Flex&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All right, well I think that's enough. Looking forward to seeing everyone at &lt;a href="http://max.adobe.com/" target="_blank"&gt;MAX&lt;/a&gt;!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;-adam&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3778731638813465899?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3778731638813465899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3778731638813465899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3778731638813465899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3778731638813465899'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/11/adobe-max-2008.html' title='Adobe MAX 2008'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5841715661279097678</id><published>2008-10-29T09:13:00.004-06:00</published><updated>2008-10-29T09:38:20.080-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipseworld'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>EclipseWorld Session Recap</title><content type='html'>As promised in my session at &lt;a href="http://eclipseworld.net/"&gt;EclipseWorld&lt;/a&gt; today, I'm posting a recap of the session. My session was titled "Building Flex/AIR UIs for Java Using Merapi". The session gave an overview of &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt;, &lt;a href="http://www.adobe.com/products/flex/features/flex_builder/"&gt;Flex Builder&lt;/a&gt;, and &lt;a href="http://merapiproject.net/"&gt;Merapi&lt;/a&gt;. I also provided some sample application demos using the &lt;a href="http://merapiproject.net/"&gt;Merapi&lt;/a&gt; framework. You'll find a link to download the slides from the session at the end of this post. My session was slated as a 100 level talk so I covered a lot of basic, high level concepts regarding &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; and &lt;a href="http://www.adobe.com/products/flex/features/flex_builder/"&gt;Flex Builder&lt;/a&gt;. I'm interested to hear feedback on the talk as I'm typically presenting at &lt;a href="http://www.360conferences.com/360flex/"&gt;Flex centric events&lt;/a&gt; and &lt;a href="http://eclipseworld.net"&gt;EclipseWorld&lt;/a&gt; focuses more on Java development. My hope is that the session was valuable to those seeking an introductory look at &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; and &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to everyone that attended and for all of the great questions throughout the session.&lt;br /&gt;&lt;br /&gt;Download links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://adamflater.net/blogassets/eclipseworld/2008/Adam_Flater-Building_Flex-AIR_UIs_for_Java_Using_Merapi.pdf"&gt;Session Slides&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Merapi Examples:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://adamflater.blogspot.com/2008/05/merapi-physics.html"&gt;Mac Book Pro Accelerometer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://adamflater.blogspot.com/2008/08/recap-from-360-flex-san-jose_19.html"&gt;Lego Mindstorm Robotics&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.infoaccelerator.net/blog/post.cfm/live-gps-visualizations-with-air-merapi"&gt;Live GPS Visualization&lt;/a&gt;*&lt;br /&gt;&lt;a href="http://www.infoaccelerator.net/blog/post.cfm/sending-growl-notifications-with-flex-via-air-merapi"&gt;Sending Growl Notifications&lt;/a&gt;*&lt;br /&gt;&lt;a href="http://www.infoaccelerator.net/blog/post.cfm/rfid-enabled-air-applications-with-merapi"&gt;RFID Enable AIR Applications&lt;/a&gt;*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* - Part of &lt;a href="http://www.infoaccelerator.net/"&gt;Andrew Powell's Blog infoaccelerator.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5841715661279097678?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5841715661279097678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5841715661279097678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5841715661279097678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5841715661279097678'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/10/eclipseworld-session-recap.html' title='EclipseWorld Session Recap'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2888054388592098769</id><published>2008-09-19T11:11:00.007-06:00</published><updated>2008-09-19T12:12:33.234-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='360flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>360 Flex | San Jose - Merapi Session Survery Feedback</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.360conferences.com/360flex/images/360Flex_SanJose_Logo_002.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://www.360conferences.com/360flex/images/360Flex_SanJose_Logo_002.jpg" alt="" border="0" /&gt;&lt;/a&gt;To keep in the open tradition of 360 | Flex I'm posting my survey feedback once again. The Merapi session at 360 Flex | San Jose was really fun and was happy to share the stage with my friend &lt;a href="http://jordansnyder.com/"&gt;Jordan Synder&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There was one very constructive comment about our examples. The examples that I showed were pretty basic and Jordan's example was somewhat complex. Showing some deeper examples with medium complexity is a great suggestion for improving this talk and a great take away for me in preparing for my next Merapi session.&lt;br /&gt;&lt;br /&gt;Thanks to everyone that came to the session and provided feedback.&lt;br /&gt;&lt;br /&gt;Without further delay...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;How to make your AIR app blow up with Merapi&lt;br /&gt;&lt;br /&gt;Merapi is a framework that enables a bridge between Flex on AIR and Java at the desktop layer. If you need to access a Java api in Flex or a Flex API in Java, this is the right tool for you. This session will cover the basics of using Merapi to build a Java enabled AIR application. Please bring your questions and comments about the framework as well as any applications you want to show off. This will be an interactive session, you'll be able to code along with the session and try out some Merapi samples.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Respondants:   33  &lt;br /&gt;&lt;br /&gt;What the user Expected?    90.91 %  &lt;br /&gt;Slides Useful:    84.85 %&lt;br /&gt;Average Rating:  4.3030&lt;br /&gt;Session Informative?  100.00 %    &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Was the speaker authoritive?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Answered questions very well and had in-depth knowledge of the subject material&lt;br /&gt;&lt;br /&gt;Both speakers spoke well.&lt;br /&gt;&lt;br /&gt;Oh man, they knew like everything about this stuff. EVERYTHING.&lt;br /&gt;&lt;br /&gt;Seemed very knowledgable, and was confident in what they were presenting.&lt;br /&gt;&lt;br /&gt;Adam was very knowledgable about the topic, seeing as he wrote the framework. He was confident in his presentation, and had very interesting content.&lt;br /&gt;&lt;br /&gt;he is involved with the beta framework and created working apps&lt;br /&gt;&lt;br /&gt;Both Adam and Jordan did a great job with their presentation. Jordan's usage of Bluetooth via AIR to control the LEGO MindStorm was way cool.&lt;br /&gt;&lt;br /&gt;adam and jordan are badass&lt;br /&gt;&lt;br /&gt;Both speakers were extremely knowledgable. Jordan; however was somewhat soft spoken and monotone, as if she was not really interested in presenting.&lt;br /&gt;&lt;br /&gt;Adam and Jordan really know their framework, and they didn't have trouble fielding question from the audience. Unfortunately, Merapi is still in its infancey, so a lot of their answers were, "That's something we're planning on doing."&lt;br /&gt;&lt;br /&gt;Adam and Jordan really know their framework, and they didn't have trouble fielding question from the audience. Unfortunately, Merapi is still in its infancey, so a lot of their answers were, "That's something we're planning on doing."&lt;br /&gt;&lt;br /&gt;I did not previously know anything about Merapi&lt;br /&gt;&lt;br /&gt;Yes&lt;br /&gt;&lt;br /&gt;I love how you have the authors of the various projects presenting on their stuff.&lt;br /&gt;&lt;br /&gt;he was one of the leads on the project and seemed to have a good grasp of what he wanted to present and the way to do it&lt;br /&gt;&lt;br /&gt;He knew what he was doing, explained it well&lt;br /&gt;&lt;br /&gt;Both speakers seemed very authoritive with the toolsets.&lt;br /&gt;&lt;br /&gt;Was a fun preso. Jordan's robot rocks!&lt;br /&gt;&lt;br /&gt;Loved Ms. Snyder's application!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Was the Session Informative?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had never heard of Merapi before&lt;br /&gt;&lt;br /&gt;Good demos&lt;br /&gt;&lt;br /&gt;It was interesting to see what Merapi was capable of and how it worked.&lt;br /&gt;&lt;br /&gt;I learned a whole whole lot of things.&lt;br /&gt;&lt;br /&gt;Good examples of what can be done with the project, and a good quick intro on how to get started.&lt;br /&gt;&lt;br /&gt;I have a sense of what merapi is and is not&lt;br /&gt;&lt;br /&gt;The session was example-heavy, which really helps when showing off a framework.&lt;br /&gt;&lt;br /&gt;The session was example-heavy, which really helps when showing off a framework.&lt;br /&gt;&lt;br /&gt;very much so&lt;br /&gt;&lt;br /&gt;Basic introduction to Merapi, though it is in private beta.&lt;br /&gt;&lt;br /&gt;he started with just 4 slides and then jumped into code&lt;br /&gt;&lt;br /&gt;yes, but I basically knew all that Adam said, but the lady was all new, that was great&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Were the Slides Useful?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There were a few slides to give background info then many examples which really helped&lt;br /&gt;&lt;br /&gt;Primarily code.&lt;br /&gt;&lt;br /&gt;They were pretty good, but it was really all about teh codez.&lt;br /&gt;&lt;br /&gt;There weren't any slides, just sample code. Which is much better than slides.&lt;br /&gt;&lt;br /&gt;There were only a few of them before he jumped in to code examples, which was great. The examples were simple enough to easily understand everything that was happening, but still interesting enough that they kept the audience's attention.&lt;br /&gt;&lt;br /&gt;Not that they weren't useful, just pretty much non-existant. Not a bad thing, hands on demos rock.&lt;br /&gt;&lt;br /&gt;There weren't many slides, but lots of talk about what the code did, so that was great.&lt;br /&gt;&lt;br /&gt;simple and sweet&lt;br /&gt;&lt;br /&gt;Yes code snippets were concise and easy to understand&lt;br /&gt;&lt;br /&gt;There weren't many slides because the session was driven by examples, but for what they were, the slides did provide the necessary information: what Merapi is, where to get it, and contact info for the speakers&lt;br /&gt;&lt;br /&gt;There weren't many slides because the session was driven by examples, but for what they were, the slides did provide the necessary information: what Merapi is, where to get it, and contact info for the speakers&lt;br /&gt;&lt;br /&gt;good overall&lt;br /&gt;&lt;br /&gt;Yes&lt;br /&gt;&lt;br /&gt;but it didn't matter. the code was the best way to describe merapi&lt;br /&gt;&lt;br /&gt;cant remember the slides - i do remember the robot&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Additional Comments:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The focus on hardware integration was interesting although unexpected. A demo of complex data manipulation using Java would have been a nice addition. There was some delay switching presenters' computers.&lt;br /&gt;&lt;br /&gt;Adam is such a badass that now I'm following him on Twitter. Also, I really liked the guest appearance by Jordan. She has a neat robot and I want to be like her (knowledgeable about robots; not female).&lt;br /&gt;&lt;br /&gt;I had never heard of merapi. I walked in thinking it yet another cairngorm clone but walked away with an appreciation of it's real domain. nice presentation. concise. And thank you for finishing when you were done rather than pull out a load of filler.&lt;br /&gt;&lt;br /&gt;Good speakers. Great demos. Bring them back.&lt;br /&gt;&lt;br /&gt;Very good. Would like to see solutions to deplyoyment and runtime intigration with java and air&lt;br /&gt;&lt;br /&gt;There were no Air Apps that blew up.&lt;br /&gt;&lt;br /&gt;Great demo from both presenters on using Merapi to bridge AIR/Java&lt;br /&gt;&lt;br /&gt;Adam had several examples that were somewhat low-level, getting no more complicated then pushing random numbers generated in Java to Flex, and Jordan's examples were much heavier. I would like to have seen something in the middle: perhaps how to leverage Merapi to do something on the OS that you cannot do in AIR. The LEGO Mindstorm demo was fantastic. It really drove the power of the framework home.&lt;br /&gt;&lt;br /&gt;Adam had several examples that were somewhat low-level, getting no more complicated then pushing random numbers generated in Java to Flex, and Jordan's examples were much heavier. I would like to have seen something in the middle: perhaps how to leverage Merapi to do something on the OS that you cannot do in AIR. The LEGO Mindstorm demo was fantastic. It really drove the power of the framework home.&lt;br /&gt;&lt;br /&gt;speakers were very knowledgable&lt;br /&gt;&lt;br /&gt;The Lego Mindstorm NXT demo was very clever.&lt;br /&gt;&lt;br /&gt;Great example of hardware / air integration.&lt;br /&gt;&lt;br /&gt;AIR controlled cars woot!&lt;br /&gt;&lt;br /&gt;Dude, the Mindstorm stuff was HOT, HOT, HOT!&lt;br /&gt;&lt;br /&gt;it would have been nice if the developers of merapi had more of the projects future planned and deployment issues decided upon but overall it was a good introduction to what merapi is and where it fits in a developer's toolkit&lt;br /&gt;&lt;br /&gt;exciting stuff&lt;br /&gt;&lt;br /&gt;Great examples!&lt;br /&gt;&lt;br /&gt;as a java developer this is a solid tool to work with AIR&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2888054388592098769?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2888054388592098769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2888054388592098769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2888054388592098769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2888054388592098769'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/09/360-flex-san-jose-merapi-session.html' title='360 Flex | San Jose - Merapi Session Survery Feedback'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-6894878773433108661</id><published>2008-08-31T13:07:00.009-06:00</published><updated>2008-09-02T12:06:17.435-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>New Universal Mind Web Site is Live!</title><content type='html'>&lt;img style="width: 590px;" src="http://adamflater.net/blogassets/umsite.png" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;We launched our new Universal Mind web site today. You can find the site at: &lt;a href="http://www.universalmind.com/"&gt;www.universalmind.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As far as I know, we are the first major Flex centric services company to release a site using Flex technology.&lt;br /&gt;&lt;br /&gt;This site was built to be search engine optimized even before the &lt;a href="http://blog.digitalbackcountry.com/?p=1478"&gt;Flex search bots&lt;/a&gt; that Adobe developed for Google and Microsoft. This is achieved in two ways: one, by using a dynamic back-end that expands the same content in an HTML view for browsers that do not support the Flash Player... and.. two, the site &lt;a href="http://www.asual.com/swfaddress/"&gt;SWFAddress&lt;/a&gt; for deep linking into content areas. Case in point, load the site on your iPhone or Blackberry and you'll see the same content and look-and-feel.&lt;br /&gt;&lt;br /&gt;The site also features extensive use of &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=modular_2.html"&gt;Flex Modules&lt;/a&gt;. The use of modules allows deferred loading of many areas of the site that users would not want to otherwise wait to load.&lt;br /&gt;&lt;br /&gt;[Update : Thanks to &lt;a href="http://www.infoaccelerator.net/"&gt;Andy Powell&lt;/a&gt; our UM Blog &lt;a href="http://blog.universalmind.com/"&gt;blog.universalmind.com&lt;/a&gt; has a new look-and-feel to match the new site.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-6894878773433108661?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/6894878773433108661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=6894878773433108661' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6894878773433108661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6894878773433108661'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/08/new-universal-mind-web-site-is-live.html' title='New Universal Mind Web Site is Live!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3091308079682526489</id><published>2008-08-24T20:47:00.004-06:00</published><updated>2008-08-24T20:55:44.083-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='merapi flex air java universal mind'/><title type='text'>Flex Authority is Live</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/flexauth/flexauth-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://adamflater.net/blogassets/flexauth/flexauth-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The first issue of Flex Authority is out! I was lucky enough to attend &lt;a href="http://www.360conferences.com/360flex/"&gt;360 Flex&lt;/a&gt; in San Jose last week and grabbed a pre-release copy there. In addition, &lt;a href="http://whatanexperience.org/"&gt;Dave Meeker&lt;/a&gt; and I were lucky enough to be interviewed by &lt;a href="http://www.leifwells.com/"&gt;Leif Wells&lt;/a&gt;. &lt;a href="http://www.leifwells.com/"&gt;Leif&lt;/a&gt; was really great about coordinating this interview on &lt;a href="http://merapiproject.com/"&gt;Merapi&lt;/a&gt;. Thanks for your patience &lt;a href="http://www.leifwells.com/"&gt;Leif&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, pick up your copy or subscription at &lt;a href="http://www.flex-authority.com/"&gt;Flex-Authority.com&lt;/a&gt; and find out more about the &lt;a href="http://merapiproject.com/"&gt;Merapi Project&lt;/a&gt; direct from &lt;a href="http://whatanexperience.org/"&gt;Dave&lt;/a&gt; and me via &lt;a href="http://www.leifwells.com/"&gt;Leif&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3091308079682526489?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3091308079682526489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3091308079682526489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3091308079682526489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3091308079682526489'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/08/flex-authority-is-live.html' title='Flex Authority is Live'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2691742164228898293</id><published>2008-08-19T17:21:00.005-06:00</published><updated>2008-08-20T12:20:29.806-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><category scheme='http://www.blogger.com/atom/ns#' term='legos'/><title type='text'>Recap from 360 Flex | San Jose</title><content type='html'>Coming at you from sunny San Jose, California at the eBay campus...&lt;br /&gt;&lt;br /&gt;Yesterday at 360 Flex I presented a session on Merapi and moderated a panel discussion on open source technology. At the Merapi session we discussed the focus of the project and show a lot of sample applications. Including a few demos that showed the ease of use when developing with Merapi.&lt;br /&gt;&lt;br /&gt;Here's some sample code that shows how to do a simple echo of a string from a Flex UI to Java and back again:&lt;br /&gt;&lt;br /&gt;Flex Source:&lt;br /&gt;&lt;iframe src="http://adamflater.net/blogassets/merapi/source/echo/source/Echo.mxml.html" height="325" width="588"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Java Source:&lt;br /&gt;&lt;iframe src="http://adamflater.net/blogassets/merapi/source/echo/Echo.java.html" height="435" width="588"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;This simple application is an example of how easy it is to communicate from AIR to Java (and vice-versa) at the desktop.&lt;br /&gt;&lt;br /&gt;I also walked through a bit of the source involved with creating the &lt;a href="http://adamflater.blogspot.com/2008/05/merapi-physics.html"&gt;gyroscope demo&lt;/a&gt; shown in the video below:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-rfIy1mRMJ8&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/-rfIy1mRMJ8&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Enter one &lt;a href="http://jordansnyder.com/"&gt;Jordan Snyder&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Jordan is a friend of mine that has a keen interest in messing with hardware, amoung other things. So, we were hanging out one night at my place and she saw that I had a Lego Mindstorm robotics kit. I proceeded to tell her bout my plans to integrate Merapi with some of the Legos APIs... long story short, she took the Mindstorm home with her and did all the work. Here's a video of the robot that Jordan presented in the same talk:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/toNEENRmYMs"&gt;  &lt;embed src="http://www.youtube.com/v/toNEENRmYMs" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;So, what's up here? The AIR application is controlling the Robot in real time using Merapi via Bluetooth. Why is that cool? This a proof of concept, but it's not smoke and mirrors by any means. This means that Merapi has a huge potential to soon be a a cross platform solution for building device enabled Flex/AIR applications.&lt;br /&gt;&lt;br /&gt;I submitted this talk for the Adobe MAX conference when they were asking for proposals, but unfortunately it was not selected. I will be at MAX though and would be happy to talk with anyone who is interested in Merapi at the &lt;a href="http://universalmind.com/"&gt;Universal Mind&lt;/a&gt; booth.  If there's enough interested in having a birds-of-a-feather-session on Merapi, I'd be happy to accommodate that as well.&lt;br /&gt;&lt;br /&gt;The feedback from the folks here at 360 Flex and those of you digging into Merapi has been great. Keep the comments coming and we'll keep on adding features and stability to the framework.&lt;br /&gt;&lt;br /&gt;[ Update: More view of "Nathan" the 360 Flex Robot ]&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/vji4rPkfnr8"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/vji4rPkfnr8" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2691742164228898293?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2691742164228898293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2691742164228898293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2691742164228898293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2691742164228898293'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/08/recap-from-360-flex-san-jose_19.html' title='Recap from 360 Flex | San Jose'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5148476339524212043</id><published>2008-06-24T14:23:00.005-06:00</published><updated>2008-06-24T14:31:50.447-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='mxml'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>LFFS - 12: Flex Builder Part 2 - Getting Acquainted With The Workbench</title><content type='html'>The second post in our sub-series on Flex Builder is out!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adobe.com/images/store/product_boxshots/150x150/box_flexbuilderstandard3_150x150.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px;" src="http://www.adobe.com/images/store/product_boxshots/150x150/box_flexbuilderstandard3_150x150.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Read here: &lt;a href="http://www.insideria.com/2008/06/lffs-12.html"&gt;LFFS - 12: Flex Builder Part 2 - Getting Acquainted With The Workbench&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, we've registered &lt;a href="http://www.learningflexfromscratch.com/"&gt;www.learningflexfromscratch.com&lt;/a&gt; as a shortcut to our content on &lt;a href="http://www.insideria.com/"&gt;Inside RIA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;thanks for reading&lt;br /&gt;-adam&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5148476339524212043?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5148476339524212043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5148476339524212043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5148476339524212043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5148476339524212043'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/06/lffs-12-flex-builder-part-2-getting.html' title='LFFS - 12: Flex Builder Part 2 - Getting Acquainted With The Workbench'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1008597357521797107</id><published>2008-05-27T07:02:00.023-06:00</published><updated>2008-12-09T19:35:15.971-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tornado parkersburg ia'/><title type='text'>&lt;offFlex&gt;Tornado Hits my Hometown&lt;/offFlex&gt;</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwONaNtibI/AAAAAAAAACI/W4kr6W56ibE/s1600-h/000_157cc161ec249f6a_1-0.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwONaNtibI/AAAAAAAAACI/W4kr6W56ibE/s320/000_157cc161ec249f6a_1-0.jpg" alt="" id="BLOGGER_PHOTO_ID_5205050892871371186" border="0" /&gt;&lt;/a&gt;I've been in touch with a lot of you about the recent storm that swept through my home town, but I wanted to take a moment to give a full update now that I finally have a minute to pause.&lt;br /&gt;&lt;br /&gt;At about 5pm on Sunday, May 25th a devastating tornado hit my hometown of &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=parkersburg,+ia&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;z=14&amp;amp;iwloc=addr"&gt;Parkersburg, IA&lt;/a&gt;. I was visiting some friends nearby in &lt;a href="http://maps.google.com/maps?saddr=La+Crosse,+WI&amp;amp;geocode=&amp;amp;dirflg=&amp;amp;daddr=Parkersburg,+IA&amp;amp;f=d&amp;amp;sll=43.81262,-91.25192&amp;amp;sspn=0.30522,0.664673&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;z=8"&gt;La Crosse, WI&lt;/a&gt; where I received a call from my parents that no one had heard from my 91 year old grandmother. We also heard news that a woman that lived 4 houses down from her had been a victim of the storm. After an hour or so, some of our good friends that help care for her gave us word that she was pulled from the the wreckage of her house completely unharmed and that she was safely resting in a &lt;a href="http://www.hawkeyechapter.org/"&gt;Red Cross&lt;/a&gt; triage facility. She had the good sense and guidance to take shelter in the shower stall of her basement bathroom during the storm. This room ended up being the most undamaged room in the house and was the safest place she could have possibly been.&lt;br /&gt;&lt;br /&gt;A lot of friends have been asking me if there's anything they can do to help. If you have the means, I'd suggest donating to one or both of these organizations:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.hawkeyechapter.org/"&gt;The Red Cross&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwOZaNticI/AAAAAAAAACQ/VJj9JUqlWBA/s1600-h/ogco_redcross_1006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 106px; height: 79px;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwOZaNticI/AAAAAAAAACQ/VJj9JUqlWBA/s320/ogco_redcross_1006.jpg" alt="" id="BLOGGER_PHOTO_ID_5205051099029801410" border="0" /&gt;&lt;/a&gt;This organization is awesome. I had always heard about the great stuff they do, in the last few days I was able to see it first hand. They cared for my grandma until we could get to her, tracked down a print out of her medications, contacted a local pharmacist to get her a 3 day supply of medication on the night of the storm, and when we rolled into town the next day they were on the scene handing out water and assisting with the cleanup efforts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.ldr.org/"&gt;Lutheran Disaster Response&lt;/a&gt; (LDR)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_h4sLtL2cd8A/SDwOnqNtidI/AAAAAAAAACY/bbXgiWFmGq0/s1600-h/images.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SDwOnqNtidI/AAAAAAAAACY/bbXgiWFmGq0/s320/images.jpeg" alt="" id="BLOGGER_PHOTO_ID_5205051343842937298" border="0" /&gt;&lt;/a&gt;This may not be a well known organization to you, but if you check out their site you'll quickly find out that when disaster strikes LDR is quickly there. We're told they'll be setting up in town tomorrow to aid in the restoration process. I volunteered to help with Katrina relief work in February this year and the LDR presence is felt strongly by the people displaced by that storm. One person I met there said, "if it wasn't for the volunteers like y'all that keep coming down here, this area would never have been rebuilt."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwalaNtinI/AAAAAAAAADo/XLPHIO2tEtc/s1600-h/damage.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwalaNtinI/AAAAAAAAADo/XLPHIO2tEtc/s320/damage.png" alt="" id="BLOGGER_PHOTO_ID_5205064499327765106" border="0" /&gt;&lt;/a&gt;Both my grandma's and uncle's houses were destroyed by the Tornado. Also, my uncles vehicles and place of work were taken. Driving through town yesterday felt like witnessing the aftermath of a bomb. They are saying that 1/3 of the town has been completely destroyed, including the town's; grocery store, gas station, lumber yard, high school, and several hundred residences.&lt;br /&gt;&lt;br /&gt;The response from friends in the town who's houses weren't damaged has been really amazing. They dug in immediately to help us sift through the rubble and recover precious items like photographs and family heirlooms. The governor was in town surveying the damage yesterday and asked the president for federal assistance. Anything you can do to encourage your representatives to support the federal efforts to help the town rebuild would also be appreciated. One phone call might not do much, but (especially in an election year) a few hundred or thousand calls might see some action.&lt;br /&gt;&lt;br /&gt;Thanks to everyone who has been supportive to my family and me in the last few days. I'll be heading back to help cleanup as soon as I pick up my sister from the airport.&lt;br /&gt;&lt;br /&gt;-adam&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwQRKNtieI/AAAAAAAAACg/VWftwDTFvbw/s1600-h/001_061a0517ec1e76c8_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwQRKNtieI/AAAAAAAAACg/VWftwDTFvbw/s320/001_061a0517ec1e76c8_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205053156319136226" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDwQl6NtiiI/AAAAAAAAADA/dhwglgEBalc/s1600-h/000_27224f5bec208e0e_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDwQl6NtiiI/AAAAAAAAADA/dhwglgEBalc/s320/000_27224f5bec208e0e_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205053512801421858" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwQdKNtigI/AAAAAAAAACw/lSpI_ZsbKKQ/s1600-h/000_235b4a4bec204031_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwQdKNtigI/AAAAAAAAACw/lSpI_ZsbKKQ/s320/000_235b4a4bec204031_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205053362477566466" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDwQZ6NtifI/AAAAAAAAACo/5KGNrsRWpU8/s1600-h/001_143db7b9ec205b85_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDwQZ6NtifI/AAAAAAAAACo/5KGNrsRWpU8/s320/001_143db7b9ec205b85_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205053306642991602" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_h4sLtL2cd8A/SDwQ-qNtikI/AAAAAAAAADQ/b45Ux3i9EDU/s1600-h/001_2041e812ec24af15_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SDwQ-qNtikI/AAAAAAAAADQ/b45Ux3i9EDU/s320/001_2041e812ec24af15_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205053938003184194" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwQ2KNtijI/AAAAAAAAADI/hV2SYLmd-hg/s1600-h/000_207233c4ec24a99b_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwQ2KNtijI/AAAAAAAAADI/hV2SYLmd-hg/s320/000_207233c4ec24a99b_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205053791974296114" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwRQKNtilI/AAAAAAAAADY/sMf3cbcdduo/s1600-h/000_19110f9fec293768_1-0-feed.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SDwRQKNtilI/AAAAAAAAADY/sMf3cbcdduo/s320/000_19110f9fec293768_1-0-feed.jpg" alt="" id="BLOGGER_PHOTO_ID_5205054238650894930" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1008597357521797107?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1008597357521797107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1008597357521797107' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1008597357521797107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1008597357521797107'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/tornado-hits-my-hometown.html' title='&amp;lt;offFlex&gt;Tornado Hits my Hometown&amp;lt;/offFlex&gt;'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_h4sLtL2cd8A/SDwONaNtibI/AAAAAAAAACI/W4kr6W56ibE/s72-c/000_157cc161ec249f6a_1-0.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2909955587284727050</id><published>2008-05-24T10:18:00.004-06:00</published><updated>2008-12-09T19:35:16.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='user group'/><title type='text'>New Rocky Mountain Adobe Users Group Site</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDhBr6NtiaI/AAAAAAAAACA/A9kq7Vk1lJk/s1600-h/rmaug_ss.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDhBr6NtiaI/AAAAAAAAACA/A9kq7Vk1lJk/s320/rmaug_ss.jpg" alt="" id="BLOGGER_PHOTO_ID_5203981592043555234" border="0" /&gt;&lt;/a&gt;The Adobe Users Group in the Denver area has a pretty sweet new site &lt;a href="http://www.rmaug.com/"&gt;www.rmaug.com&lt;/a&gt;. The site and user group are maintained by the crew at &lt;a href="http://realeyes.com/"&gt;RealEyes&lt;/a&gt;. My favorite feature so far is the &lt;a href="http://rmaug.com/rmaug/index.cfm?page=blogs"&gt;blog aggregator&lt;/a&gt; for the local Adobe / RIA bloggers. It's cool to see how much is going on in the Denver/Boulder area in terms of new technology. Stop by and give the site a look, and if you're an RIA coder looking for a new home, I'd consider checking out Denver. Also, if you're a local technology blogger submit your feed url to rmaug and get it aggregated. (They may want you to be a user group participant though.. which would seem fair to me.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2909955587284727050?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2909955587284727050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2909955587284727050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2909955587284727050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2909955587284727050'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/new-rocky-mountain-adobe-users-group.html' title='New Rocky Mountain Adobe Users Group Site'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_h4sLtL2cd8A/SDhBr6NtiaI/AAAAAAAAACA/A9kq7Vk1lJk/s72-c/rmaug_ss.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-9212935349089647919</id><published>2008-05-21T19:28:00.006-06:00</published><updated>2008-12-09T19:35:16.165-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='gyroscope'/><category scheme='http://www.blogger.com/atom/ns#' term='unimotion'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='accelerometer'/><category scheme='http://www.blogger.com/atom/ns#' term='web maniacs'/><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><title type='text'>Merapi + Physics</title><content type='html'>Today at &lt;a href="http://webmaniacsconference.com/"&gt;Web Maniacs&lt;/a&gt; I gave a fairly brief, short notice talk on &lt;a href="http://www.merapiproject.net/"&gt;Merapi&lt;/a&gt;. I had a few slides and presented a couple examples. The coolest example by far is something that &lt;a href="http://dougmccune.com/"&gt;Doug McCune&lt;/a&gt; helped me throw together. This example involves using a physics engine for Flex called &lt;a href="http://drawlogic.com/2007/11/07/as3-foam-2d-physics-engine/"&gt;Foam&lt;/a&gt; and &lt;a href="http://merapiproject.net/"&gt;Merapi&lt;/a&gt; to invoke the Java/C  call &lt;a href="http://www.shiffman.net/p5/sms/"&gt;SMS/Unimotion&lt;/a&gt; to read the Mac Book Pro's accelerometer. &lt;a href="http://www.robrusher.com/"&gt;Rob Rusher&lt;/a&gt; (also a speaker at &lt;a href="http://webmaniacsconference.com/"&gt;Web Manics&lt;/a&gt;) was nice enough to shoot a video of this example:&lt;br /&gt;&lt;center&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-rfIy1mRMJ8&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/-rfIy1mRMJ8&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;and here's a screen shot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDTOg6NtiYI/AAAAAAAAABw/Tb3R4ciBuog/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SDTOg6NtiYI/AAAAAAAAABw/Tb3R4ciBuog/s320/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5203010534297667970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The source code needed in the Flex app is this tag:&lt;br /&gt;&lt;pre&gt;  &amp;lt;gyroscope:merapigyroscope id="gyro"&gt;&lt;br /&gt;&lt;/pre&gt;The MerapiGyroscope class has a few properties (smsX, smsY, smsZ) that are bindable and automatically updated by the Java side of Merapi.&lt;br /&gt;&lt;br /&gt;This is sneak peak of much more cool stuff to come from the framework and I can guarantee that these libraries will be available for you to play with soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-9212935349089647919?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/9212935349089647919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=9212935349089647919' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/9212935349089647919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/9212935349089647919'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/merapi-physics.html' title='Merapi + Physics'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_h4sLtL2cd8A/SDTOg6NtiYI/AAAAAAAAABw/Tb3R4ciBuog/s72-c/Picture+3.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-4147038267711707748</id><published>2008-05-21T08:31:00.003-06:00</published><updated>2008-05-21T08:35:11.877-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Sean The Flex Guy and UM</title><content type='html'>Another great developer started working with &lt;a href="http://www.universalmind.com"&gt;Universal Mind&lt;/a&gt; recently. I met Sean Moore via twitter and blogs and have been really impressed with his skills and background. You can check out Sean's post about it on his &lt;a href="http://seantheflashguy.com/blog/2008/05/20/sean-the-flex-guy-universal-mind-watch-out-now/"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Glad your on a &lt;a href="http://www.universalmind.com"&gt;UM&lt;/a&gt; project Sean.. Hopefully we'll work together directly soon, then it'll really "watch out now" time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-4147038267711707748?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/4147038267711707748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=4147038267711707748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/4147038267711707748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/4147038267711707748'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/sean-flex-guy-and-um.html' title='Sean The Flex Guy and UM'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3876287519773134095</id><published>2008-05-16T09:57:00.004-06:00</published><updated>2008-05-16T10:00:09.343-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='static code'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>InsideRIA Post - More on Static Code</title><content type='html'>I have a new post up on InsideRIA called : &lt;a href="http://www.insideria.com/2008/05/more-on-static-code.html"&gt;More on Static Code&lt;/a&gt;. This is in response to the high demand that I saw in my blog analytics for a post I did sometime back on this blog called &lt;a href="http://adamflater.blogspot.com/2007/03/static-code-blocks.html"&gt;Static Code Blocks!&lt;/a&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope you find it helpful.&lt;/div&gt;&lt;div&gt;-adam&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3876287519773134095?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3876287519773134095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3876287519773134095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3876287519773134095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3876287519773134095'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/insideria-post-more-on-static-code.html' title='InsideRIA Post - More on Static Code'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3930776537734082617</id><published>2008-05-15T23:25:00.014-06:00</published><updated>2008-12-09T19:35:17.307-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='web maniacs'/><title type='text'>Web Maniacs 2008</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/SC0jvg-pUnI/AAAAAAAAABo/MdwmXQPAdBk/s1600-h/wm.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SC0jvg-pUnI/AAAAAAAAABo/MdwmXQPAdBk/s320/wm.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5200852443896304242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;When I originally submitted two topics for &lt;a href="http://webmaniacsconference.com/"&gt;Web Maniacs&lt;/a&gt; a few months ago I figured I might end up presenting one of them. Now I’m doing four. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order of appearance:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;9a, Wed: Advanced Skinning and Component Development&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_h4sLtL2cd8A/SC0bPg-pUjI/AAAAAAAAABI/PvbA32_3CR8/s320/icons.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5200843098047468082" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_h4sLtL2cd8A/SC0bhA-pUkI/AAAAAAAAABQ/2w14tRVlTb4/s1600-h/degrafa.png"&gt;&lt;img src="http://1.bp.blogspot.com/_h4sLtL2cd8A/SC0bhA-pUkI/AAAAAAAAABQ/2w14tRVlTb4/s320/degrafa.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5200843398695178818" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;This session will actually be more about skinning and less about component development. After presenting this topic at &lt;a href="http://www.360conferences.com/360flex/"&gt;360 Flex | Atlanta&lt;/a&gt; I learned that the CS3 design extensions and general Flex skinning techniques are more than enough info to fill a session. I’ll be happy to answer any questions on component development, but the focus of the talk will be all the different ways to create skins. There are various pros and cons associated with each skinning method and we’ll talk a bit about those as well.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2p, Wed: The &lt;a href="http://merapiproject.net/"&gt;Merapi&lt;/a&gt; Project - A Framework for Bridging Java and AIR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://dev.merapiproject.net/images/stories/merapicup.jpg" border="0" alt="" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer;width: 50px" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I’ll be presenting some samples applications in this session and answering questions regarding the project. We’ll be entering a private alpha cycle during Web Maniacs, so this is an exciting time for &lt;a href="http://merapiproject.net/"&gt;Merapi&lt;/a&gt;. If you have an interest in how to push the boundaries of AIR to extend into Java at the desktop, come check out this session.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;9a, Thu: Design Patterns and Architecture Frameworks&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_h4sLtL2cd8A/SC0czQ-pUlI/AAAAAAAAABY/AWHu7EpF2XU/s320/Book_designpatterns.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5200844811739419218" style="float: right; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; cursor: pointer; width: 75px " /&gt;&lt;/div&gt;&lt;div&gt;In this session I’ll be presenting several of the design patterns found in the classic Gamma, Helm, Johnson, and Vlissides text “Design Patterns: Elements of Reusable Object-Oriented Software,” with a Flex twist. Some of these patterns appear the the Flex framework, some appear in Flex application frameworks, and some are just common patterns used in the everyday life of an OO developer. This talk is focused towards the intermediate to expert level object oriented programmer.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;11a, Thu: Flex Open Source Panel Discussion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://4.bp.blogspot.com/_h4sLtL2cd8A/SC0dnw-pUmI/AAAAAAAAABg/BnAh1_suils/s320/os.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5200845713682551394" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width:150px " /&gt;&lt;div&gt;This panel discussion will include founders and contributors from various open source projects in the Flex community. I’ll introduce the panel and each project that’s represented. Then, we’ll pose some general questions about open source technology and the implications on using OS projects in your Flex applications. As we wrap up, we’ll take general questions on OS as well as specific questions for the panel regarding the projects they work on. If you're interested in being on the panel, please contact me at adamflater at gmail dot com.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whew... I think that’s about it. See you all in D.C. and watch my blog for assets from these talks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;thanks for reading&lt;/div&gt;&lt;div&gt;-adam&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3930776537734082617?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3930776537734082617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3930776537734082617' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3930776537734082617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3930776537734082617'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/web-maniacs-2008.html' title='Web Maniacs 2008'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_h4sLtL2cd8A/SC0jvg-pUnI/AAAAAAAAABo/MdwmXQPAdBk/s72-c/wm.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-620704864478345738</id><published>2008-05-09T14:26:00.003-06:00</published><updated>2008-05-09T14:51:05.559-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='360flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Need Opinions on LFFS</title><content type='html'>As many of you know I've been co-writing a series on the O'Reilly site &lt;a href="http://www.insideria.com"&gt;www.insideria.com&lt;/a&gt; with my friend &lt;a href="http://yogascott.blogspot.com"&gt;Scott Sheridan&lt;/a&gt; called &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;Learning Flex from Scratch&lt;/a&gt;.  A big thanks to &lt;a href="http://blog.everythingflex.com/"&gt;Rich Tretola&lt;/a&gt; for having us on as a part of Inside RIA. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When we started the series Scott had no experience as a programmer. His academic background is in Psychology and he is a music and yoga teacher. He literally began this project at a point of learning Flex from scratch. My academic background is in Computer Science and Sociology. One of the things that interested me in the very small amount of study I did in the Sociology of Eduction is the idea that students often make the best teachers. So, my role in this project was/is as mentor and technical editor as Scott chronicles his experiences learning the ins and outs of becoming a Flex developer.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The insight that I've gained on how a person learns to be a programmer has been invaluable. I hope this project has resulted in a novel resource for the novice to learn how to really use all of the powerful capabilities offered by the Flex platform.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, we're starting to talk about planning where to go next. &lt;a href="http://www.johnwilker.com/"&gt;John Wilker&lt;/a&gt; and &lt;a href="http://lordbron.wordpress.com/"&gt;Tom Ortega&lt;/a&gt; were gracious enough to accept both Scott and myself as presenters at &lt;a href="http://www.360conferences.com/360flex/"&gt;360 Flex | San Jose&lt;/a&gt;. We will be presenting the &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;LFFS&lt;/a&gt; series. After that we're open to what comes next and I'd love to hear some feedback on what would be most valuable to those of you out there learning Flex.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some ideas to think about:&lt;/div&gt;&lt;div&gt; - A full length book in the LFFS style&lt;/div&gt;&lt;div&gt; - A series of pocket-guide books&lt;/div&gt;&lt;div&gt; - Continuing the series as is&lt;/div&gt;&lt;div&gt; - Creating a featured site for LFFS that includes addt'l writers&lt;/div&gt;&lt;div&gt; - A focus on LFFS sessions at Adobe community events&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Don't think of this as a comprehensive list of choices or that any choices are mutually exclusive. We'd love to hear what will be the most valuable resource for you. Feel free to comment on this post or e-mail me at adamflater at gmail dot com.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;thanks&lt;/div&gt;&lt;div&gt;-adam&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-620704864478345738?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/620704864478345738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=620704864478345738' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/620704864478345738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/620704864478345738'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/need-opinions-on-lffs.html' title='Need Opinions on LFFS'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3479237436013309387</id><published>2008-05-02T13:42:00.002-06:00</published><updated>2008-05-02T13:46:40.974-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='mxml'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>LFFS - 9 - MXML Continued... And A Sample Application For You To Work With!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.insideria.com/adam_flater_and_scott_sheridan"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand" src="http://adamflater.net/blogassets/InsideRIA_badge_200.gif" border="0" alt="" /&gt;&lt;/a&gt;The &lt;a href="http://www.insideria.com/2008/05/lffs-9-mxml-continued-and-a-sa.html"&gt;latest post&lt;/a&gt; in the &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;Learning Flex from Scratch&lt;/a&gt; series is up. This post continues exploring the MXML language and leaves you with a uncompleted application to finish. The first "homework assignment" of &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;LFFS&lt;/a&gt;, if you will. Check back next week for explanation of the solution Scott came up with.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;thanks for reading&lt;/div&gt;&lt;div&gt;-adam&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3479237436013309387?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3479237436013309387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3479237436013309387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3479237436013309387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3479237436013309387'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/05/lffs-9-mxml-continued-and-sample.html' title='LFFS - 9 - MXML Continued... And A Sample Application For You To Work With!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2466828798663307456</id><published>2008-04-14T10:37:00.007-06:00</published><updated>2008-04-14T12:23:16.800-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Artemis'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Merapi is churning... out comes "Hello World"</title><content type='html'>I've been getting a lot of e-mails from people regarding Merapi lately. So, I thought it'd be a good idea to put together a "Hello World" screen cast. In the video below you'll see a very simple use case of the framework: An AIR application that connects to Merapi on startup and receives a String from Java that's shown in a Flex Label control.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/EGqMAGCH5Hc"&gt;  &lt;embed src="http://www.youtube.com/v/EGqMAGCH5Hc" type="application/x-shockwave-flash" width="425" height="355"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;So, what does this mean? It means..&lt;br /&gt; - The framework is coming together and we'll be looking for your questions and concerns about how we're implementing it.&lt;br /&gt; - A private alpha will be on it's way very soon.&lt;br /&gt; - More screen casts will be coming.&lt;br /&gt; - There's real code now. Merapi is now classified as active.&lt;br /&gt;&lt;br /&gt;[ Update - Dave goes into more detail on the latest : &lt;a href="http://www.whatanexperience.org/2008/04/merapi-says-hello-world-10-framework.html"&gt;Merapi says "Hello World" - 1.0 Framework nears completion&lt;/a&gt; ]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2466828798663307456?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2466828798663307456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2466828798663307456' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2466828798663307456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2466828798663307456'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/04/merapi-is-churning-out-comes-hello.html' title='Merapi is churning... out comes &quot;Hello World&quot;'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-4212666249346168145</id><published>2008-04-10T10:51:00.002-06:00</published><updated>2008-04-10T11:00:44.551-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>LFFS - 7: Helpful Resources For Learning Flex (part one)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.insideria.com/adam_flater_and_scott_sheridan"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand" src="http://adamflater.net/blogassets/InsideRIA_badge_200.gif" border="0" alt="" /&gt;&lt;/a&gt;The &lt;a href="http://www.insideria.com/2008/04/in-this-installment-of-learnin.html"&gt;latest post&lt;/a&gt; in the &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;Learning Flex from Scratch&lt;/a&gt; series is up. It focuses on the online resources &lt;a href="http://yogascott.blogspot.com/"&gt;Scott&lt;/a&gt; has found useful while learning Flex. We'll be doing more of these posts as the series continues, but you can also check out the &lt;a href="http://del.icio.us/lffs"&gt;del.icio.us&lt;/a&gt; account that Scott setup for &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;LFFS&lt;/a&gt;. Here you will find the URLs of the resources he finds valuable while learning Flex and writing &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;Learning Flex from Scratch&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;thanks for reading&lt;/div&gt;&lt;div&gt;-adam&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-4212666249346168145?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/4212666249346168145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=4212666249346168145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/4212666249346168145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/4212666249346168145'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/04/lffs-7-helpful-resources-for-learning.html' title='LFFS - 7: Helpful Resources For Learning Flex (part one)'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1592242703963212690</id><published>2008-04-09T11:29:00.004-06:00</published><updated>2008-04-09T11:59:47.451-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>More Inside RIA Blogging</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.360conferences.com/360flex/images/360Flex_SanJose_Logo_002.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px;" src="http://www.360conferences.com/360flex/images/360Flex_SanJose_Logo_002.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Apart from the &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;Learning Flex From Scratch&lt;/a&gt; series I'll be doing some &lt;a href="http://www.insideria.com/adam_flater/"&gt;guest blogging&lt;/a&gt; on my own from time-to-time. My first post is on &lt;a href="http://www.insideria.com/2008/04/360flex-homecoming.html"&gt;360|Flex San Jose&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://blog.everythingflex.com/"&gt;Rich&lt;/a&gt; for making me a two time Inside RIA guest blogger.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1592242703963212690?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1592242703963212690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1592242703963212690' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1592242703963212690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1592242703963212690'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/04/more-inside-ria-blogging.html' title='More Inside RIA Blogging'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2297095297935081893</id><published>2008-04-04T08:27:00.002-06:00</published><updated>2008-04-04T08:35:57.011-06:00</updated><title type='text'>LFFS - 5 &amp; 6 are out</title><content type='html'>Looks like I forgot to do a post announcing &lt;a href="http://www.insideria.com/2008/03/lffs5actionscript-conditionals.html"&gt;LFFS 5&lt;/a&gt; and now &lt;a href="http://www.insideria.com/2008/04/lffs-6-actionscript-30-arrays.html"&gt;6&lt;/a&gt; is out as well. &lt;br /&gt;&lt;br /&gt;In &lt;a href="http://www.insideria.com/2008/03/lffs5actionscript-conditionals.html"&gt;LFFS 5&lt;/a&gt; Scotty is taking us into the world of ActionScript loops and conditionals. Need a beginners look at a for, for in, for in each, while, or do while loop? Look no further than LFFS. &lt;br /&gt;&lt;br /&gt;In &lt;a href="http://www.insideria.com/2008/04/lffs-6-actionscript-30-arrays.html"&gt;LFFS 6&lt;/a&gt; we're jumping into Arrays. This post is an introductory look at using Arrays in ActionScript. It is by no means comprehensive, and doesn't touch on collections yet, but it's a good way to jump in to the concept.&lt;br /&gt;&lt;br /&gt;Thanks for reading&lt;br /&gt;-adam&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2297095297935081893?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2297095297935081893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2297095297935081893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2297095297935081893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2297095297935081893'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/04/lffs-5-6-are-out.html' title='LFFS - 5 &amp; 6 are out'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7301080274481205981</id><published>2008-03-27T11:47:00.003-06:00</published><updated>2008-03-27T11:49:19.480-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Artemis'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>More Merapi news - Dave Meeker is on</title><content type='html'>Dave is joining the team on more of the business strategy / user experience angles for Merapi. He just released a nice post today as an overview of what Merapi will be aimed at.. check it out &lt;a href="http://www.whatanexperience.org/2008/03/its-volcano-its-framework-its-amazing.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7301080274481205981?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7301080274481205981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7301080274481205981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7301080274481205981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7301080274481205981'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/03/more-merapi-news-dave-meeker-is-on.html' title='More Merapi news - Dave Meeker is on'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-8879025965874880811</id><published>2008-03-12T17:30:00.003-06:00</published><updated>2008-03-12T17:35:56.919-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>LFFS - 4: Actionscript 3.0 (Part 1)</title><content type='html'>&lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;&lt;img src="http://adamflater.net/blogassets/InsideRIA_badge_200.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Our latest post in the Inside RIA series "Learning Flex from Scratch" is up. It's called: &lt;a href="http://www.insideria.com/2008/03/lffs-4-actionscript-30.html"&gt;LFFS - 4: Actionscript 3.0&lt;/a&gt;. In this post Scott begins his journey into the syntax of Actionscript 3.0. This first post is a look at how to write a basic class... posts will follow with examples on writing loops, if-then conditionals and more..&lt;br /&gt;&lt;br /&gt;stay tuned&lt;br /&gt;-adam&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-8879025965874880811?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/8879025965874880811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=8879025965874880811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8879025965874880811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8879025965874880811'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/03/lffs-4-actionscript-30-part-1.html' title='LFFS - 4: Actionscript 3.0 (Part 1)'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2185788586240593276</id><published>2008-03-09T13:10:00.005-06:00</published><updated>2008-03-10T15:13:08.095-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>An open call for Designers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/umlogo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://adamflater.net/blogassets/umlogo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;a title="Universal Mind" href="http://www.universalmind.com/" id="chmh"&gt;Universal Mind&lt;/a&gt; has growing need to offer design services to customers in conjunction with our industry leading Rich Internet Application development. If you are a designer that loves RIAs, user experience, bleeding-edge internet technology, information architecture, and Adobe's creative suite, we'd like to talk to you.&lt;a title="Universal Mind" href="http://www.universalmind.com/" id="e:4q"&gt;&lt;/a&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://adamflater.net/blogassets/inc500.gif" alt="" border="0" /&gt;&lt;a title="Universal Mind" href="http://www.universalmind.com/" id="e:4q"&gt;Universal Mind&lt;/a&gt; is an &lt;a title="Inc. 500" href="http://www.inc.com/inc5000/2007/company-profile.html?id=200702900" id="rskc"&gt;Inc. 500&lt;/a&gt; company whose founders have a strong background in technology and professional services. We are a distributed company that has employees and contractors on staff across the country. Our distributed nature makes us very nimble. Each of our consultants is equally skilled at working from their home office as they are going on-site to work closely with a customer's development, design, product, or project management teams. We're also not new to the Flex/RIA game. The companies founders have ties all the way back to the days of Allaire Cold Fusion consulting. Our relationship with Adobe is strong and our customers love the experience of working with UM teams. &lt;div id="t5l7" style="padding: 1em 0pt; text-align: left;"&gt;If you think have you what it takes to join our stellar team, please send over a resume and most importantly a portfolio. Feel free to contact me at [adamflater at gmail dot com] if you have any questions or submit your stuff directly to [jobs at universalmind dot com].&lt;/div&gt;&lt;/div&gt;&lt;div&gt;There are a few of us in the Denver metro area now and would be really excited to meet some great people locally or people who would like to relocate to Denver, but if you're settled in somewhere that suits you geographically that's not a problem.&lt;br /&gt;&lt;div id="t5l7" style="padding: 1em 0pt; text-align: left;"&gt;By the way, we're pretty fun too, check out what &lt;a title="Doug McCune" href="http://dougmccune.com/" id="g-yr"&gt;Doug McCune&lt;/a&gt; has to say about being a Universal Mind employe: &lt;a title="Doug's Blog" href="http://dougmccune.com/blog/category/universal-mind/" id="sure"&gt;Doug's Blog&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2185788586240593276?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2185788586240593276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2185788586240593276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2185788586240593276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2185788586240593276'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/03/open-call-for-designers.html' title='An open call for Designers'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3070449067142229621</id><published>2008-03-04T15:31:00.006-07:00</published><updated>2008-03-04T15:41:12.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='360flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>360|Flex Atlanta Survey Results</title><content type='html'>I thought I'd mirror Tom and John's style of being transparent about 360|Flex and share the survey results of my talk.&lt;br /&gt;&lt;br /&gt;Thanks to everyone that gave feedback. I'll be giving a 2.0 version of this talk at Flex Maniacs in May and feedback from attendees is really helpful to know what to polish.&lt;br /&gt;&lt;br /&gt;If you were at my talk and didn't have to time to give feedback, feel free to comment here or send me an e-mail off-line. I'd love to hear about how to make this talk more usefull.&lt;br /&gt;&lt;br /&gt;thanks&lt;br /&gt;-adam&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.360conferences.com/downloads/atl_bling_100.png" /&gt;&lt;br /&gt;Results for your session, enjoy.&lt;br /&gt;&lt;br /&gt;Advanced Skinning and Component Development&lt;br /&gt;&lt;br /&gt;Respondants:        7              &lt;br /&gt;What the user Expected?    71.43 %      &lt;br /&gt;Slides Useful:  71.43 %&lt;br /&gt;Average Rating:      4.4286    &lt;br /&gt;Session Informative?          71.43 %   &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Was the speaker authoritive?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Very good presentation, had materials available for us to download&lt;br /&gt;&lt;br /&gt;Knows his stuff. Great talk, good pace.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Was the Session Informative?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hadn't really done skinning - very cool functionality&lt;br /&gt;&lt;br /&gt;Useful step-by-step demos!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Were the Slides Useful?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Great reference slides.&lt;br /&gt;&lt;br /&gt;Love the slides and the examples on how to skin in Flash. I will definately be using them in the future.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Additional Comments:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;well done&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3070449067142229621?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3070449067142229621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3070449067142229621' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3070449067142229621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3070449067142229621'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/03/360flex-atlanta-survey-results.html' title='360|Flex Atlanta Survey Results'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5458288108093645043</id><published>2008-02-29T09:41:00.004-07:00</published><updated>2008-02-29T09:50:05.310-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>LFFS - 3: Object Oriented Language</title><content type='html'>&lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;&lt;img src="http://adamflater.net/blogassets/InsideRIA_badge_200.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Our latest post in the Inside RIA series "Learning Flex from Scratch" is up. It's called: &lt;a href="http://www.insideria.com/2008/02/lffs-3-object-oriented-languag.html"&gt;LFFS - 3: Object Oriented Language&lt;/a&gt;. In this post we unpack the definition and need for an object oriented language and also define object oriented concepts that are relevant for our next post on ActionScript.&lt;br /&gt;&lt;br /&gt;Stay tuned.. thanks for reading.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5458288108093645043?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5458288108093645043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5458288108093645043' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5458288108093645043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5458288108093645043'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/lffs-3-object-oriented-language.html' title='LFFS - 3: Object Oriented Language'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2548610731975986531</id><published>2008-02-27T10:27:00.002-07:00</published><updated>2008-02-27T10:34:18.086-07:00</updated><title type='text'>Resources for my 360|Flex Talk - Advanced Skinning and Component Development</title><content type='html'>You can download the resources for my talk &lt;a href="http://adamflater.net/blogassets/360flex/2008/atlanta/Advanced-Skinning-and-Component-Development-360-Atlanta-Adam-Flater.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2548610731975986531?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2548610731975986531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2548610731975986531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2548610731975986531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2548610731975986531'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/resources-for-my-360flex-talk-advanced.html' title='Resources for my 360|Flex Talk - Advanced Skinning and Component Development'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7500216107167761147</id><published>2008-02-25T20:40:00.005-07:00</published><updated>2008-02-25T20:48:12.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Flex Open Source Panel at 360 Flex Tomorow</title><content type='html'>If you're at 360|Flex in Atlanta this week, we'll be doing a panel discussion of a bunch of different Flex Open Source projects in the hands on room tomorrow at 10am. I'll be there talking a bit about Merapi, there'll be folks representing other projects such as, Degrafa, OpenFlux, Flex Lib, the MDI windowing project.. etc... This will be a very open panel / birds of a feather style session. So, if you want to hear about an OS project or get some questions answered, come on over for the session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7500216107167761147?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7500216107167761147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7500216107167761147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7500216107167761147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7500216107167761147'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/flex-open-source-panel-at-360-flex.html' title='Flex Open Source Panel at 360 Flex Tomorow'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-173919150794433235</id><published>2008-02-22T10:05:00.011-07:00</published><updated>2008-02-22T10:35:33.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Speaking of Swag...</title><content type='html'>I'll have Merapi t-shirts and stickers on hand at 360|Flex. There's a limited supply of the shirts, but if you come to my talk you'll have a better chance of vying for one.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/360flex/2008/atlanta/MerapiShirt.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 585px;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/MerapiShirt.jpg" alt="" border="0" /&gt;&lt;/a&gt;Thanks to Andrew Powelll for receiving the shirts at his house in GA (and modeling for the photo).&lt;br /&gt;&lt;br /&gt;Also, I need to thank the companies that sponsored these shirts...&lt;br /&gt;&lt;br /&gt;First of all, the biggest sponsorship came from the Tom and John at 360... thanks a lot guys ... your logo is on the back ;)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://360conferences.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/360.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The rest of the sponsors are listed in alphabetical order...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://digitalprimates.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/digitalprimates.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://effectiveui.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/eui.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://realeyes.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/realeyes.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://roundarch.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/roundarch.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://universalmind.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/um.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks again to all the sponsors!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-173919150794433235?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/173919150794433235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=173919150794433235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/173919150794433235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/173919150794433235'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/speaking-of-swag.html' title='Speaking of Swag...'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-4574869985505417005</id><published>2008-02-22T09:53:00.005-07:00</published><updated>2008-12-09T19:35:17.748-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Sneak Peek of My 360 Talk</title><content type='html'>My talk at the upcoming 360|Flex conference in Atlanta is called : Advanced Skinning and Component Development. Once I got in the thick of preparing for this talk I realized it was really two topics. So, my talk will focus more on skinning than component development, but I'm still going to try to hit both topics.&lt;br /&gt;&lt;br /&gt;First, we'll look at the basic skinning techniques and some quick examples. Next, I'll move on to an example of using the CS3 Flex Design Extensions to build this custom skin for a ComboBox:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_h4sLtL2cd8A/R77_HbJNaBI/AAAAAAAAABA/R5IXJEROKJU/s1600-h/maccombobox.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_h4sLtL2cd8A/R77_HbJNaBI/AAAAAAAAABA/R5IXJEROKJU/s320/maccombobox.jpg" alt="" id="BLOGGER_PHOTO_ID_5169849925278459922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Finally, (time permitting) we'll wrap up with a look at the component development process for this custom horizontal list component (a recreation from Apple's site) :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/360flex/2008/atlanta/applehlist.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; width: 585px; cursor: pointer;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/applehlist.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Please bring any questions or comments you might have about skinning or component development.&lt;br /&gt;&lt;br /&gt;I'll be posting all the resources for the talk on my blog just before the session.&lt;br /&gt;&lt;br /&gt;cya in Atlanta&lt;br /&gt;-adam   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-4574869985505417005?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/4574869985505417005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=4574869985505417005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/4574869985505417005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/4574869985505417005'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/sneak-peek-of-my-360-talk.html' title='Sneak Peek of My 360 Talk'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_h4sLtL2cd8A/R77_HbJNaBI/AAAAAAAAABA/R5IXJEROKJU/s72-c/maccombobox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-8271507428711165224</id><published>2008-02-19T10:52:00.003-07:00</published><updated>2008-02-19T10:57:55.509-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>LFFS - 2: Flex Defined</title><content type='html'>The second post in our Learning Flex from scratch series is up: &lt;a href="http://www.insideria.com/2008/02/lffs-2-flex-defined.html"&gt;Flex Defined&lt;/a&gt;. This post defines Flex and the important concepts around it. In our next post we'll start looking at the programming languages of Flex... Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-8271507428711165224?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/8271507428711165224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=8271507428711165224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8271507428711165224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8271507428711165224'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/lffs-2-flex-defined.html' title='LFFS - 2: Flex Defined'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3258335575904620138</id><published>2008-02-17T10:06:00.006-07:00</published><updated>2008-02-17T10:45:23.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>Top 10 Reasons to go to Flex|360 - Atlanta</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;10 - Swag&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9 - &lt;a href="http://www.360conferences.com/360flex/2008/01/360flex-atlanta-schedule-and-choose.html"&gt;Tons of Great Sessions&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;8 - &lt;a href="http://www.360conferences.com/360flex/2008/02/360flex-for-fence-sitters-big.html"&gt;Adobe's Big Announcement&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7 -  &lt;a href="http://www.360conferences.com/apicontest/apicontest.cfm"&gt;The new 360 API Contests&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;6 - Awesome Networking Opportunities&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5 - Tom and John know what's up... you need to meet them if you do Flex&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;4 - Doug McCune.. you just never know...&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://farm3.static.flickr.com/2008/2171974289_f6cae66915_m.jpg" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3 - Ryan Stewart + Thermo.. c'mon&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://adamflater.net/blogassets/360flex/2008/atlanta/stewart_plus_thermo.png" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 546px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2 - Matt Chotin, Very nice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://adamflater.net/blogassets/360flex/2008/atlanta/chotin.jpg" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 455px; " /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;(&lt;a href="http://www.restlessthinker.com/blog/index.php"&gt;Courtesy of Louie Penaflor&lt;/a&gt;)&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;1 - Beer&lt;/div&gt;&lt;img src="http://adamflater.net/blogassets/360flex/2008/atlanta/ppbeverag.jpg" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 85px;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3258335575904620138?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3258335575904620138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3258335575904620138' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3258335575904620138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3258335575904620138'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/top-10-reasons-to-go-to-flex360-atlanta.html' title='Top 10 Reasons to go to Flex|360 - Atlanta'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2008/2171974289_f6cae66915_t.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5921720015636666065</id><published>2008-02-12T10:54:00.001-07:00</published><updated>2008-02-18T06:15:43.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lffs'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>LFFS - 1: Meet the Authors, Meet Flex</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/InsideRIA_badge_200.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px;" src="http://adamflater.net/blogassets/InsideRIA_badge_200.gif" border="0" alt="" /&gt;&lt;/a&gt;Our first post is up on the O'Reilly Inside RIA Site.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.insideria.com/2008/02/lffs1-meet-the-authors-meet-fl.html"&gt;LFFS - 1: Meet the Authors, Meet Flex&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This first post is an introduction of Scott and myself and a way to set a base for what we'll be up to in the coming posts. Our next post is called Flex Defined. In Flex Defined we'll define the major topics of Flex that are important for a novice learning Flex to be aware of.&lt;br /&gt;&lt;br /&gt;You'll also be able to find the aggregation of all our posts at: &lt;a href="http://www.insideria.com/adam_flater_and_scott_sheridan/"&gt;InsideRIA: Adam Flater and Scott Sheridan Archives&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5921720015636666065?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5921720015636666065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5921720015636666065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5921720015636666065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5921720015636666065'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/lffs-1-meet-authors-meet-flex.html' title='LFFS - 1: Meet the Authors, Meet Flex'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3390487323961983981</id><published>2008-02-12T01:13:00.000-07:00</published><updated>2008-02-12T01:30:51.129-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oreilly'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='inside ria'/><title type='text'>Blogging on O'Reilly's Inside RIA</title><content type='html'>I feel very fortunate to have been asked to be a part of the new &lt;a href="http://blogs.oreilly.com/insideria/"&gt;O'Reilly Inside RIA&lt;/a&gt; blog site. &lt;a href="http://blog.everythingflex.com/"&gt;Rich Tretola&lt;/a&gt; asked me if I would like to be involved a short time ago. I decided to take a stab at something that isn't yet that prominent in the blogosphere: "Learning Flex from Scratch". This is the title of the series that my friend Scott Sheridan and I are writing for &lt;a href="http://blogs.oreilly.com/insideria/"&gt;Inside RIA&lt;/a&gt;. Scott is new to Flex and we'll be covering all the stuff he'll be learning to become a Flex developer. &lt;br /&gt;&lt;br /&gt;Here's our summary for the series:&lt;br /&gt;&lt;br /&gt;This series of installments will chronicle the learning of a complete beginner as he attempts to become a Flex developer. The series will culminate with the production of a working application built in Flex and deployed on the web. Our hope is to create a reference that will serve as a guide to those new to programming and wishing to step into the world of Flex.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out our bios: &lt;a href="http://www.insideria.com/contributors.html"&gt;Inside RIA Contributors&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3390487323961983981?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3390487323961983981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3390487323961983981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3390487323961983981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3390487323961983981'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/blogging-on-oreillys-inside-ria.html' title='Blogging on O&apos;Reilly&apos;s Inside RIA'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3848692395980724511</id><published>2008-02-08T10:27:00.000-07:00</published><updated>2008-02-08T10:34:52.083-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Merapi Desktop Bling!</title><content type='html'>Here's some Merapi bling for your desktop...&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://adamflater.net/blogassets/merapi/desktop-backgrounds/"&gt;Eruption&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://adamflater.net/blogassets/merapi/desktop-backgrounds/"&gt;&lt;img src="http://adamflater.net/blogassets/merapi/desktop-backgrounds/merapi-eruption-thumb.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://adamflater.net/blogassets/merapi/desktop-backgrounds/"&gt;Smoke&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://adamflater.net/blogassets/merapi/desktop-backgrounds/"&gt;&lt;img src="http://adamflater.net/blogassets/merapi/desktop-backgrounds/merapi-smoke-thumb.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3848692395980724511?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3848692395980724511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3848692395980724511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3848692395980724511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3848692395980724511'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/merapi-desktop-bling.html' title='Merapi Desktop Bling!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3751072106588821233</id><published>2008-02-05T09:06:00.000-07:00</published><updated>2008-02-05T16:20:30.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Artemis'/><category scheme='http://www.blogger.com/atom/ns#' term='merapi'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Meet Merapi</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/merapi/merapilogo300.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height:197px" src="http://adamflater.net/blogassets/merapi/merapilogo300.jpg" border="0" alt="" /&gt;&lt;/a&gt;Merapi is a new project that is a framework for connecting AIR to java at the desktop. It will be built as freeware until the team is happy with the stability. We will then move it to Google Code and make the project open source. There will be more to come but for now I can tell you that Merapi will pick up where Artemis left off with the goals of making it easier to implement using the framework, providing a good mechanism of deployment, and solving some security concerns.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;{ Update : &lt;a href="http://www.infoaccelerator.net/index.cfm?event=showEntry&amp;amp;entryId=EA90DA24-FF30-C9A3-ADC312077D259100"&gt;Andrew's post about naming Merapi&lt;/a&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The contributors...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sean Christmann&lt;br /&gt;&lt;br /&gt;Sean is an Experience Architect with over 7 years work in online applications and games. Originally trained in design and media, he found reading code easier then designing web sites and now applies his knowledge of both worlds to help create compelling user experiences in the RIA space. Sean is currently leading the development of eBay's disruptive new desktop application codenamed 'San Dimas' built on the AIR platform. Sean works for &lt;a href="http://www.effectiveui.com/"&gt;EffectiveUI&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Adam Flater&lt;br /&gt;&lt;a href="http://www.adamflater.net/"&gt;http://www.adamflater.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Adam was co-creater of the Artemis project and creator of this project. Artemis was created when AIR was still in alpha and code named Apollo. He's been a Flex coder since 2005 and a was a java developer before that. Adam works for &lt;a href="http://www.universalmind.com/"&gt;Universal Mind&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alex MacCaw&lt;br /&gt;&lt;a href="http://www.eribium.org/"&gt;http://www.eribium.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alex is a 18yr old Rails &amp;amp; Flex developer. He's been using Rails for 3 years now and has a fair number of open source projects to his name, as well as an active blog. Alex works for  &lt;a href="http://www.reevoo.com/"&gt;Reevoo&lt;/a&gt;, a London startup.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Louie Penaflor&lt;br /&gt;&lt;a href="http://www.restlessthinker.com/"&gt;http://www.restlessthinker.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Louie is a designer turned developer and has been designing and developing interactive applications and games utilizing Flash since 1999. Louie works for &lt;a href="http://www.digitalprimates.com/"&gt;Digital Primates&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Andrew Powell&lt;br /&gt;&lt;a href="http://www.infoaccelerator.net/"&gt;http://www.infoaccelerator.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Andrew has been architecting and developing web applications for over 10 years using ColdFusion, Flex, AJAX, and Java. Currently, his focus is on integrating enterprise Java technologies such as Spring and Hibernate with Flex and AIR applications.  Andrew works for &lt;a href="http://www.universalmind.com/"&gt;Universal Mind&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Juan Sanchez&lt;br /&gt;&lt;a href="http://www.scalenine.com/"&gt;http://www.scalenine.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Juan is experience designer and has a variety of design experience with branding, advertising, Flash, Flex, HTML, CSS, and print media. Juan works for &lt;a href="http://www.effectiveui.com/"&gt;EffectiveUI&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rhazes Spell&lt;br /&gt;&lt;br /&gt;Rhazes is currently a Lead Interactive Developer.  Prior to that he was under the tutelage of Adam who learned him well in the art of making bits and bytes dance and prance.  He's been a Flex developer since 2007, Java before that, but Perl will always be his first love. Rhazes works for &lt;a href="http://www.roundarch.com/"&gt;Roundarch&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3751072106588821233?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3751072106588821233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3751072106588821233' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3751072106588821233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3751072106588821233'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/meet-merapi.html' title='Meet Merapi'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7378204864710178810</id><published>2008-02-01T14:31:00.000-07:00</published><updated>2008-02-01T15:03:16.766-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mims wright'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>New Animation Library from Mims Wright - KitchenSync</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/p/kitchensynclib/"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://mimswright.com/kitchensync/docs/img/KSLogo.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mimswright.com/blog/"&gt;Mims Wright&lt;/a&gt; has just released a new animation library. I haven't tried it out yet, but it looks pretty cool. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quoting the &lt;a href="http://code.google.com/p/kitchensynclib/"&gt;wiki&lt;/a&gt;:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"KitchenSync was designed for developers who want a smart way to handle animation or other time-based functionality with code. Written from the ground up in ActionScript 3.0, KitchenSync relies on smart object-oriented architecture rather than complicated shorthand. It includes a number of features and shortcuts, such as the clone() method, that save effort for developers. KitchenSync makes extensive use of events and informative runtime errors and is quite flexible when it comes to extending the functionality."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out &lt;a href="http://code.google.com/p/kitchensynclib/"&gt;KitchenSync&lt;/a&gt; on GoogleCode : &lt;a href="http://code.google.com/p/kitchensynclib/"&gt;http://code.google.com/p/kitchensynclib/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Links from Mims' blog &lt;a href="http://mimswright.com/blog/?p=223"&gt;post&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; - &lt;a href="http://code.google.com/p/kitchensynclib/wiki/GettingStarted"&gt;Getting started&lt;/a&gt;&lt;br /&gt; - &lt;a href="http://code.google.com/p/kitchensynclib/w/list?q=label:Actions"&gt;Types of synchronized actions&lt;/a&gt;&lt;br /&gt; - &lt;a href="http://code.google.com/p/kitchensynclib/wiki/TimeUnit"&gt;Units of time, parsing time strings, and sync mode&lt;/a&gt;&lt;br /&gt; - &lt;a href="http://mimswright.com/kitchensync/docs/api/"&gt;API Reference&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7378204864710178810?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7378204864710178810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7378204864710178810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7378204864710178810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7378204864710178810'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/02/new-3d-library-from-mims-wright.html' title='New Animation Library from Mims Wright - KitchenSync'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7543986894338321143</id><published>2008-01-30T13:43:00.000-07:00</published><updated>2008-02-01T12:02:52.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='360flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='360 flex'/><title type='text'>360|Flex  Atlanta : Advanced Skinning and Component Development</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/360flex/2008/atlanta/blingbadge.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 150px;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/blingbadge.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'll be speaking at the next 360|Flex conference coming up in Atlanta. If you've not been to a 360|Flex in the past, they're great conferences and you should definitely check it out. &lt;a href="http://lordbron.wordpress.com/"&gt;Tom&lt;/a&gt; and &lt;a href="http://www.johnwilker.com/"&gt;John&lt;/a&gt; do a great job a putting these events on. There will be a ton of great speakers, include several from Universal Mind (listed below).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's my abstract for the talk:&lt;br /&gt;&lt;br /&gt;Advanced Skinning and Component Development&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/360flex/2008/atlanta/360-atl-talk-icon.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/360-atl-talk-icon.jpg" alt="" border="0" /&gt;&lt;/a&gt;Building components for the Flex Framework can be a tricky task. In this session we will examine some of the best practices of component development as well as look at the tools available for skinning a custom Flex control. We'll walk through a demo of building a custom component developed using MXML and ActionScript 3.0 and skinned using the Flex plugins for Photoshop, Fireworks, Flash, and Illustrator. As there is no release date set for Thermo no promises can be made about a demo of it's capabilities, but if it's available we'll look at that too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UM Speakers :&lt;br /&gt; - &lt;a href="http://www.cubicleman.com/"&gt;Doug Knudsen&lt;/a&gt; : Custom components in a BRIA environment'&lt;br /&gt; - &lt;a href="http://dougmccune.com/blog"&gt;Doug McCune&lt;/a&gt; : Session: Be Lazy, Use Open Source Flex Projects&lt;br /&gt; - &lt;a href="http://www.infoaccelerator.net/"&gt;Andrew Powell&lt;/a&gt; : Building Java Powered Flex Applications&lt;br /&gt;&lt;br /&gt;The 360|Flex Pitch&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/360flex/2008/atlanta/badge.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px;" src="http://adamflater.net/blogassets/360flex/2008/atlanta/badge.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This 3-day conference is the place to learn about Flex and AIR from Adobe and community speakers. Sunday before the conference we'll be offering an all day Flex 101 session, included in the price of registration. That's right, a pre-conference all day training session on Flex. 360|Flex is the premiere Flex and AIR conference. We were the first Flex conference and we're still growing and getting better.&lt;br /&gt;Don't miss out, only $480 for an individual or $1500 for a 4-person team. More details can be found at &lt;a href="http://360flex.com/"&gt;http://360flex.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7543986894338321143?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7543986894338321143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7543986894338321143' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7543986894338321143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7543986894338321143'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/01/360flex-atlanta-advanced-skinning-and.html' title='360|Flex  Atlanta : Advanced Skinning and Component Development'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5430887947069961152</id><published>2008-01-29T19:54:00.000-07:00</published><updated>2008-01-30T14:44:19.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Mike Chambers'/><category scheme='http://www.blogger.com/atom/ns#' term='CommandProxy'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Scott Barnes'/><category scheme='http://www.blogger.com/atom/ns#' term='Artemis'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>The Battle of AIR and Light (Silver)</title><content type='html'>This post is in response to the recent battle of words ignited by a post from &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike Chambers&lt;/a&gt; called &lt;a href="http://www.mikechambers.com/blog/2008/01/17/commandproxy-net-air-integration-proof-of-concept/"&gt;CommandProxy : .NET / AIR Integration Proof of Concept&lt;/a&gt;. Soon after &lt;a href="http://blogs.msdn.com/msmossyblog/about.aspx"&gt;Scott Barnes&lt;/a&gt; posted a response to &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike's&lt;/a&gt; post called &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2008/01/21/adobe-air-net-proxy-concerns-arise.aspx"&gt;Adobe AIR + .NET Proxy - Concerns arise&lt;/a&gt; and a subsequent post &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2008/01/22/re-adobe-air-net-command-proxy-security-concerns.aspx"&gt;RE: Adobe AIR + .NET Command Proxy Security concerns&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;[ Update : &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt; added this &lt;a href="http://www.mikechambers.com/blog/2008/01/22/commandproxy-its-cool-but-is-it-a-good-idea/"&gt;post&lt;/a&gt; that I was unaware of when I wrote mine.. also helpful to clarify what's going on ]&lt;br /&gt;&lt;br /&gt;Disclosure&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I am a &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; Developer &lt;/li&gt;&lt;li&gt;I use &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; products daily&lt;/li&gt;&lt;li&gt;I work for an &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; partner: &lt;a href="http://www.universalmind.com/"&gt;Universal Mind&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I am a fan of the &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; platform&lt;/li&gt;&lt;li&gt;I worked on the &lt;a href="http://desktop.ebay.com/"&gt;eBay Desktop project&lt;/a&gt;&lt;/li&gt;&lt;li&gt;I was co-creator of the &lt;a href="http://adamflater.blogspot.com/search?q=artemis"&gt;Artemis Project&lt;/a&gt; (similar to &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike's&lt;/a&gt; CommandProxy)&lt;/li&gt;&lt;li&gt;I've also worked as a &lt;a href="http://sun.com/java"&gt;java&lt;/a&gt; and &lt;a href="http://microsoft.com/"&gt;Microsoft&lt;/a&gt; developer in the past. &lt;/li&gt;&lt;/ul&gt;Add all this up and I think my background gives a bit of relevance to the conversation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'd like do discuss some of the real issues here and do it in an attack-free manner. But first, since the previous conversations escalated to attacking some of the people I know and projects I've been close to, I'd like to give some shout outs:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've heard &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt; speak several times, had a couple conversations with him, and read his &lt;a href="http://www.mikechambers.com/blog/"&gt;blog&lt;/a&gt; pretty regularly. My impression of &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt; has always been that he's an extremely capable technologist who cares a lot about his product (&lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt;). I've had extremely brief discussions with him about competing technologies. There was never a time in the course of any of these discussions where he has bashed another product or an employe of a competing company.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://alanlewis.typepad.com/"&gt;Alan&lt;/a&gt; / &lt;a href="http://desktop.ebay.com/"&gt;eBay Desktop&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had the pleasure of working on the &lt;a href="http://desktop.ebay.com/"&gt;eBay Desktop&lt;/a&gt; application before the &lt;a href="http://seekingalpha.com/article/45376-project-san-dimas-ebay-s-desktop-application"&gt;Alpha release in 2006&lt;/a&gt; and for a time after that. &lt;a href="http://alanlewis.typepad.com/"&gt;Alan&lt;/a&gt; is a great guy to work with. Again, like &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt; he also cares a lot about his product. As &lt;a href="http://alanlewis.typepad.com/"&gt;Alan&lt;/a&gt; stated, the &lt;a href="http://desktop.ebay.com/"&gt;eBay Desktop&lt;/a&gt; application is in beta (as is &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt;).  It's hardly fair or relevant to criticize the user acceptance of an application that is in beta. For me, &lt;a href="http://desktop.ebay.com/"&gt;eBay Desktop&lt;/a&gt; isn't about offline it's about a better experience, but more on that would be off topic.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/"&gt;Adobe's&lt;/a&gt; Developer Relations&lt;br /&gt;&lt;br /&gt;I've had quite a bit of interaction with the &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; evangelists, probably the most with &lt;a href="http://blogs.zdnet.com/Stewart/"&gt;Ryan Stewart&lt;/a&gt;, but also; &lt;a href="http://www.onflex.org/"&gt;Ted Patrick&lt;/a&gt;, &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike Chambers&lt;/a&gt;, &lt;a href="http://madowney.com/blog/"&gt;Mike Downey&lt;/a&gt; and &lt;a href="http://weblogs.macromedia.com/khoyt/"&gt;Kevin Hoyt&lt;/a&gt;. &lt;a href="http://blogs.zdnet.com/Stewart/"&gt;Ryan&lt;/a&gt; went out of his way to help me out with &lt;a href="http://adamflater.blogspot.com/search?q=artemis"&gt;Artemis&lt;/a&gt; and other &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; related stuff even before he was an &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; employe. All of the other guys I have listed have been more than reasonable in answering all of my questions or concerns. Quite frankly, it's their job and they're good at it.&lt;br /&gt;&lt;br /&gt;Another place &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; shines in developer relations is through their engineering team. I've had e-mails answered by engineers and product managers from the Flex team that have saved me a lot of time, and I know that I'm far from the exception in this case. In my opinion, this is stuff that they really don't have to do and it's very much appreciated.&lt;br /&gt;&lt;br /&gt;None of this is meant to be an attack on &lt;a href="http://microsoft.com/"&gt;Microsoft&lt;/a&gt;. It's been over 3 years since I did any &lt;a href="http://microsoft.com/"&gt;Microsoft&lt;/a&gt; development, so I really don't know what they're developer relations are like. It's also not to try and get &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; to buy me a house (although I wouldn't turn it down). It's just a chance to highlight the good things going on at Adobe in light of the criticisms raised. Now on to the real issues...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/msmossyblog/about.aspx"&gt;Scott&lt;/a&gt; brought up two points that were interesting to me. One was regarding security and the other was on the relevance (ie "what is being solved here?").&lt;br /&gt;&lt;br /&gt;On Security&lt;br /&gt;&lt;br /&gt;As I understand it, there are two concerns regarding security. The first is data protection. In &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike's&lt;/a&gt; proof of concept, as well as in the &lt;a href="http://adamflater.blogspot.com/search?q=artemis"&gt;Artemis&lt;/a&gt; framework, the data that is exchanged between &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx"&gt;.NET&lt;/a&gt;/&lt;a href="http://java.sun.com/"&gt;java&lt;/a&gt; is sent through a socket that is not encrypted. It is possible for another process to monitor this data and intercept it in the same way a sniffer process that inspects packets on an &lt;a href="http://en.wikipedia.org/wiki/Al_Gore"&gt;internet&lt;/a&gt; connection can retrieve sensitive data that is sent across the &lt;a href="http://en.wikipedia.org/wiki/Al_Gore"&gt;internet&lt;/a&gt;. This is a concern for someone building an application that might send sensitive data between &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx"&gt;.NET&lt;/a&gt;/&lt;a href="http://java.sun.com/"&gt;java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The second security risk is that another process might hijack the proxy process. It would be possible to build a malware &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; application that could connect to the proxy process and cause it to do very nasty things to the underlying system (like search the hard disk for credit card numbers, or just reformat it). To me, this is the bigger risk. An important question here is: Why is this different from a &lt;a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx"&gt;.NET&lt;/a&gt; application that might to the same nasty things? It is different because &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; is a platform that has a security model associated with it. This type of bridging gives a false impression of security to the user.  The result is an &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; application  to &lt;a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx"&gt;.NET&lt;/a&gt; or &lt;a href="http://java.sun.com/"&gt;java&lt;/a&gt; that has taken on all of the security risks of the bridged platform as well as the risk of data protection in the transport.&lt;br /&gt;&lt;br /&gt;So, &lt;a href="http://blogs.msdn.com/msmossyblog/about.aspx"&gt;Scott&lt;/a&gt; is correct, these are big risks and should not be taken lightly, however, where I disagree is that is that &lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt; as an &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; employe has no right to explore these ideas publicly. The fact that he (and others at &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;) work on projects like this make me even more interested in their platform as a developer. That's not a claim that any of their products are better than the competition, which is arguably subjective claim from either side.  What I appreciate is the philosophy at &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; that allows for and perceives the value of this work. It's work like this that showed us &lt;a href="http://www.peterelst.com/blog/2007/10/03/adobe-max-chicago-sneak-peeks/"&gt;Quake running in the Flash Player&lt;/a&gt; at &lt;a href="http://www.adobe.com/events/max/"&gt;MAX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If these kinds of methods were something that &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; was interested in supporting, rest assured the security issues would be addressed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On Relevance (What is solved here?)&lt;br /&gt;&lt;br /&gt;When I presented &lt;a href="http://adamflater.blogspot.com/search?q=artemis"&gt;Artemis&lt;/a&gt; at &lt;a href="http://www.360conferences.com/blog/"&gt;360 Flex&lt;/a&gt; in &lt;a href="http://www.360conferences.com/360flex/2007/04/360flex-seattle-badge.html"&gt;August&lt;/a&gt; &lt;a href="http://www.colettas.org/"&gt;David Coletta&lt;/a&gt; asked a question on &lt;a href="http://adamflater.blogspot.com/search?q=artemis"&gt;Artemis&lt;/a&gt; that went something like: "Pphilosophically is this a way to improve &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; or extend the capabilities of &lt;a href="http://java.sun.com/"&gt;java&lt;/a&gt;?" This is really a similar question. So, why? My answer for that is one that companies selling platforms might not like, and that is: Ubiquity. As a developer I want ubiquity between APIs, frameworks, languages, OSes, and definitely platforms.&lt;br /&gt;&lt;br /&gt;The idea for &lt;a href="http://adamflater.blogspot.com/search?q=artemis"&gt;Artemis&lt;/a&gt; came from the desire to make the benefits of &lt;a href="http://java.sun.com/"&gt;java&lt;/a&gt; (countless open source projects and many great language features) available to a &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; developer creating &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; applications. At the same time, providing the powerful UI capabilities of &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; to &lt;a href="http://java.sun.com/"&gt;java&lt;/a&gt; developers. I'd rather stop thinking in terms of the dichotomy that either &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; / &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; or &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt; / &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663326.aspx"&gt;WPFE&lt;/a&gt; is better as a platform or for a particular project, and be able to use the great features of both technologies ubiquitously. Unfortunately, I think the days of building a &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt; module and loading it into a &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; app (or vice versa) are far away.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To sum up...&lt;br /&gt;&lt;br /&gt;This work is definitely not the kind of stuff you validate a platform on. It's not a solution for most (if any) enterprise or consumer applications, but it's fun, cool stuff. That's what I love about this technology. It's fun to create solutions with it and I love the challenge of pushing what it's designed to do.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mikechambers.com/blog/about/"&gt;Mike&lt;/a&gt;, thanks for working on &lt;a href="http://www.mikechambers.com/blog/2008/01/17/commandproxy-net-air-integration-proof-of-concept/"&gt;CommandProxy&lt;/a&gt;. It's a great idea to get &lt;a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx"&gt;.NET&lt;/a&gt; devs excited about &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; and push what &lt;a href="http://www.adobe.com/products/air/"&gt;AIR&lt;/a&gt; can do. &lt;a href="http://blogs.msdn.com/msmossyblog/about.aspx"&gt;Scott&lt;/a&gt;, thanks for bringing your concerns, the real issues underneath all of the unnecessary comments from both sides are relevant and important.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5430887947069961152?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5430887947069961152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5430887947069961152' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5430887947069961152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5430887947069961152'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/01/battle-of-air-and-light-silver.html' title='The Battle of AIR and Light (Silver)'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-6812775571371747277</id><published>2008-01-28T14:17:00.000-07:00</published><updated>2008-01-28T14:23:19.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='air iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='joe merhl'/><category scheme='http://www.blogger.com/atom/ns#' term='ribbit'/><title type='text'>Joe Merhl On Board at UM</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://merhl.com/wp-content/uploads/2007/06/iphone2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://merhl.com/wp-content/uploads/2007/06/iphone2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.merhl.com/"&gt;Joe&lt;/a&gt; is the man that brought us the &lt;a href="http://developer.ribbit.com/showcase/AIRiPhone/"&gt;AIR iPhone&lt;/a&gt; powered by &lt;a href="http://www.ribbit.com/"&gt;Ribbit&lt;/a&gt;. I'm really excited to have &lt;a href="http://www.merhl.com/"&gt;Joe&lt;/a&gt; on board helping lead the UX charge at Universal Mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-6812775571371747277?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/6812775571371747277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=6812775571371747277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6812775571371747277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6812775571371747277'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/01/joe-merhl-on-board-at-um.html' title='Joe Merhl On Board at UM'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3160629586524964620</id><published>2008-01-28T12:48:00.000-07:00</published><updated>2008-01-28T12:58:04.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='yahoo flex skin'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Simple Transitions To Improve User Experience</title><content type='html'>One of the fairly simple applications I've been impressed with since switching to Mac OS X about a year ago is &lt;a href="http://www.roxio.com/enu/products/toast/titanium/overview.html"&gt;Toast&lt;/a&gt;. Particularly, I like the way they use a morphing effect. A similar effect is used throughout Mac OS X.&lt;br /&gt;&lt;br /&gt;As a simple UX exercise I decided to recreate the &lt;a href="http://www.google.com/talk/"&gt;Google Talk&lt;/a&gt; install process in Flex and then apply some morphing transitions. In this example I've used the recently released &lt;a href="http://developer.yahoo.com/flash/articles/yahoo-flex-skin.html"&gt;Yahoo! Flex Skin&lt;/a&gt; to approximate a desktop look and feel. Thanks to the guys at &lt;a href="http://developer.yahoo.com/flash/"&gt;Yahoo! Flash Dev&lt;/a&gt; for getting this out.&lt;br /&gt;&lt;br /&gt;In this first example you'll see a sequence dialogs very similar to the &lt;a href="http://www.google.com/talk/"&gt;Google Talk&lt;/a&gt; install process.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/simpletransistions/flex/NoTransitions.html" target="_blank"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://adamflater.net/blogassets/simpletransistions/notrans.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the second I've added a morph effect similar to the effect that &lt;a href="http://www.roxio.com/enu/products/toast/titanium/overview.html"&gt;Toast&lt;/a&gt; uses. In my opinion using a subtle effect like this drastically improves the user experience (UX).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://adamflater.net/blogassets/simpletransistions/flex/SimpleTransitions.html" target="_blank"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://adamflater.net/blogassets/simpletransistions/trans.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let me know what you think, drop a comment...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3160629586524964620?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3160629586524964620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3160629586524964620' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3160629586524964620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3160629586524964620'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/01/simple-transitions-to-improve-user.html' title='Simple Transitions To Improve User Experience'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2459153381815433147</id><published>2008-01-28T11:39:00.000-07:00</published><updated>2008-02-02T00:12:23.627-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Artemis'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>The Future of Artemis</title><content type='html'>There has been a bit of buzz around Artemis lately, so I thought I'd do a quick update on what up for Artemis.&lt;br /&gt;&lt;br /&gt;First off, my friend &lt;a href="http://www.restlessthinker.com/"&gt;Louie Penaflor&lt;/a&gt; at &lt;a href="http://tappernimer.com/"&gt;&lt;s&gt;Tapper Nimer and Associates&lt;/s&gt;&lt;/a&gt; &lt;a href="http://digitalprimates.com/"&gt;Digital Primates&lt;/a&gt; has been doing some cool stuff with Artemis and scanners. Check out his recent blog on it: &lt;a href="http://www.restlessthinker.com/blog/?p=69"&gt;Going beyond the boundaries of AIR.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Secondly, Louie along with &lt;a href="http://www.infoaccelerator.net/"&gt;Andrew Powell&lt;/a&gt; and myself are starting a new project to take over where Artemis left off. There will be a new name, a new framework, and cool new libraries to play with.&lt;br /&gt;&lt;br /&gt;Stay tuned.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2459153381815433147?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2459153381815433147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2459153381815433147' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2459153381815433147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2459153381815433147'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2008/01/future-of-artemis.html' title='The Future of Artemis'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7837000254690745444</id><published>2007-12-17T15:55:00.001-07:00</published><updated>2007-12-17T16:15:07.337-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><category scheme='http://www.blogger.com/atom/ns#' term='Mylyn'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse Plugin'/><title type='text'>Review of Mylyn</title><content type='html'>My new favorite Eclipse plugin is Mylyn: &lt;a href="http://www.eclipse.org/mylyn"&gt;http://www.eclipse.org/mylyn&lt;/a&gt;. I was recently introduced to Mylyn by &lt;a href="http://www.darronschall.com/weblog/"&gt;Darron Schall&lt;/a&gt;. I'm working on a project under him right now and Mylyn was a tool that he had been using for Trac integration.&lt;br /&gt;&lt;br /&gt;Once you get your Trac permissions setup correctly, this thing is a breeze to use.&lt;br /&gt;&lt;br /&gt;1. Set up a "Repository" (A link to the Trac, or Bugzilla site you're using)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://adamflater.net/blogassets/mylyn/mylyn-1.jpg" /&gt;&lt;br /&gt;&lt;img src="http://adamflater.net/blogassets/mylyn/mylyn-2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Create a query. This query will produce a task list. So far, I've really only used this to get all the tasks that are assigned to me as I'm not doing any type of management on this project, but a project manager or team lead can easily create queries that let them monitor that status of a project.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://adamflater.net/blogassets/mylyn/mylyn-3.jpg" /&gt;&lt;br /&gt;&lt;img src="http://adamflater.net/blogassets/mylyn/mylyn-4.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Open your task list. (I've blurred some client related data here to protect NDAs.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://adamflater.net/blogassets/mylyn/mylyn-5.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;4. Open a task.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://adamflater.net/blogassets/mylyn/mylyn-6.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I really like how this brings the task list work flow right into the IDE. It's a great way to use Trac more efficiently.&lt;br /&gt;&lt;br /&gt;Thanks for the tip Darron!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7837000254690745444?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7837000254690745444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7837000254690745444' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7837000254690745444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7837000254690745444'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/12/review-of-mylyn.html' title='Review of Mylyn'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1128724663649992196</id><published>2007-12-15T23:06:00.002-07:00</published><updated>2007-12-15T23:27:11.784-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Universal Mind'/><title type='text'>Joining Universal Mind</title><content type='html'>&lt;img style="margin: 10pt 10px 10px 10pt; float: right; width: 170px;" src="http://adamflater.net/blogassets/umlogo.png" alt="" border="0" /&gt;After making the decision to leave my former position I had another tough decision to make; what to do next. My first plan was to contract for a while to see how I enjoyed that lifestyle as well as try out a few companies, but as I took the advice of many of my friends in the industry I knew that I would be much happier in the long term if I found a more permanent home.&lt;br /&gt;&lt;br /&gt;I ended up talking with several organizations and had to make a tough decision between a few very competitive offers. In the end, helping to build a team of talented rich internet application technologists at Universal Mind was the best match for my goals. I'm really excited about the crew that is taking shape and the work that will be a result in the coming months and years.&lt;br /&gt;&lt;br /&gt;I think my buddy Doug best summed it up in his latest blog post : &lt;a href="http://tinyurl.com/33rdyu"&gt;http://tinyurl.com/33rdyu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;  "So what does this mean? It means Universal Mind is badass."&lt;br /&gt;&lt;br /&gt;My first couple weeks as a contractor have been outstanding. I'm looking forward to the opportunity to continue working with all of the great people at Universal Mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1128724663649992196?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1128724663649992196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1128724663649992196' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1128724663649992196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1128724663649992196'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/12/joining-universal-mind.html' title='Joining Universal Mind'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3769207266717355554</id><published>2007-12-14T15:17:00.000-07:00</published><updated>2007-12-14T15:23:25.187-07:00</updated><title type='text'>Leaving EffectiveUI</title><content type='html'>About three weeks ago I officially left EffectiveUI. This was an extremely difficult decision, one that I made in order to pursue career objectives outside of EffectiveUI. I have been contracting since, but will soon be on in a new full time position that I'm really excited about...  more to come on that.&lt;br /&gt;&lt;br /&gt;I wish all of my friends at EffectiveUI much success in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3769207266717355554?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3769207266717355554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3769207266717355554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3769207266717355554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3769207266717355554'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/12/leaving-effectiveui.html' title='Leaving EffectiveUI'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-8406354310183104138</id><published>2007-11-12T10:32:00.000-07:00</published><updated>2007-11-12T10:48:56.166-07:00</updated><title type='text'>[offFlex]HandBrake[/offFlex]</title><content type='html'>One of the coolest video ripping / conversion tools I've ever used. This thing is freeware, cross platform, and has a GUI and command line interface. I recently purchased a Mac Mini to serve up media to my TV and HandBrake has been awesome for ripping my DVD collection. Do yourself a favor and check it out.&lt;br /&gt;&lt;br /&gt;Download : &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href='http://handbrake.m0k.org/?article=download'&gt;http://handbrake.m0k.org/?article=download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Screengrab : &lt;br&gt;&lt;br /&gt;&lt;img src='http://handbrake.m0k.org/site/images/screenshots/Audio_and_Subtitles.png' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-8406354310183104138?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/8406354310183104138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=8406354310183104138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8406354310183104138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/8406354310183104138'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/11/handbrake.html' title='[offFlex]HandBrake[/offFlex]'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7761204576432852364</id><published>2007-09-28T15:18:00.000-06:00</published><updated>2007-09-28T15:23:40.830-06:00</updated><title type='text'>david coletta's max talk</title><content type='html'>David Coletta from &lt;a href=http://www.virtub.com/&gt;Virtual Ubiquity (Buzzword)&lt;/a&gt; will be giving a talk on optimization in Flex a the Adobe MAX conference next week. He was gracious enough to include a screen cast of an application I've been working on called Web Watcher : &lt;a href=http://www.webwatcherapp.com&gt;www.webwatcherapp.com&lt;/a&gt; in his talk. Make sure you make it to one of his sessions. I'll be there, so say 'hi'!&lt;br /&gt;&lt;br /&gt;David Coletta&lt;br /&gt;David Coletta’s career in software development has focused on collaborative applications as they have evolved over the last two decades -- email, groupware, online services, and rich internet applications -- at companies like Virtual Ubiquity, Ab Initio Software, eRoom Technology, Ziff-Davis Interactive, and Pacer Software. Since the beta 1 release of Flex 2 in January 2006, David has been digging Flex more than all other technologies combined. David holds a B.A. in Music from Amherst College.&lt;br /&gt;&lt;br /&gt;Optimizing Flex Applications&lt;br /&gt;Tuesday, October 2   4:00 pm - 5:00 pm&lt;br /&gt;Wednesday, October 3   11:00 am - 12:00 pm&lt;br /&gt;&lt;Br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7761204576432852364?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7761204576432852364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7761204576432852364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7761204576432852364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7761204576432852364'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/09/david-colettas-max-talk.html' title='david coletta&apos;s max talk'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3208427980765651712</id><published>2007-09-28T14:49:00.000-06:00</published><updated>2007-09-28T14:54:55.980-06:00</updated><title type='text'>facebook interview on crn</title><content type='html'>I was recently part of a group interview session with Stacy Cowley from CRN. Here's a snippet of the article where I was quoted:&lt;br /&gt;&lt;br /&gt;'...Adam Flater, an EffectiveUI software architect, sees Facebook's fluffiness as an essential part of its appeal.&lt;br /&gt;&lt;br /&gt;"Users are adopting things for their sheer entertainment value right now. When a client wants adoption, these are the tools to do that with," Flater said.'&lt;br /&gt;&lt;br /&gt;Stacy asked some really important, informed questions. I'll most definitely be following her articles in the future.&lt;br /&gt;&lt;br /&gt;&lt;a href=http://www.crn.com/it-channel/202102503?pgno=1&gt;http://www.crn.com/it-channel/202102503?pgno=1&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3208427980765651712?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3208427980765651712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3208427980765651712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3208427980765651712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3208427980765651712'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/09/facebook-interview-on-crn.html' title='facebook interview on crn'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2798575835888441</id><published>2007-09-24T14:22:00.000-06:00</published><updated>2007-09-24T14:23:31.695-06:00</updated><title type='text'>send me some cool stickers</title><content type='html'>Looking for cool Flex related stickers to deck out my machine. If you have any such stickers, send them my way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2798575835888441?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2798575835888441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2798575835888441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2798575835888441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2798575835888441'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/09/send-me-some-cool-stickers.html' title='send me some cool stickers'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5992530723198460301</id><published>2007-08-30T11:57:00.000-06:00</published><updated>2007-08-30T12:21:58.912-06:00</updated><title type='text'>accordion bug</title><content type='html'>Accordion is a class in the Flex 2 Framework (&lt;a target="_balnk" href='http://livedocs.adobe.com/flex/201/langref/mx/containers/Accordion.html'&gt;see it on live docs&lt;/a&gt;). I was skinning an Accordion for &lt;a target="_blank" href='http://adamflater.blogspot.com/2007/08/announcing-traffic-bug.html'&gt;TrafficBug&lt;/a&gt; the other day and noticed a bug. &lt;br /&gt;&lt;br /&gt;The bug involves using resizeToContent and verticalGap. Here's a demo app that shows the problem:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://adamflater.net/blogassets/accordionbug/AccordionBugExample.html" width="475" height="275"&gt;&lt;br /&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;As you can see the Accordion isn't accounting for the verticalGap when height is measured. An easy fix for this is overriding the Accordion's measure function:&lt;br /&gt;&lt;pre&gt;override&lt;font color="#0000ff"&gt; protected&lt;/font&gt;&lt;font color="#009900"&gt; function&lt;/font&gt; measure&lt;b&gt;&lt;font color="#666666"&gt;() :&lt;/font&gt;&lt;/b&gt;&lt;font color="#0000ff"&gt; void&lt;/font&gt;&lt;b&gt;&lt;font color="#666666"&gt; {&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;   super&lt;b&gt;&lt;font color="#666666"&gt;.&lt;/font&gt;&lt;/b&gt;measure&lt;b&gt;&lt;font color="#666666"&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color="#0000ff"&gt;&lt;br /&gt;   this&lt;/font&gt;&lt;b&gt;&lt;font color="#666666"&gt;.&lt;/font&gt;&lt;/b&gt;measuredHeight&lt;b&gt;&lt;font color="#666666"&gt; += (&lt;/font&gt;&lt;/b&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;b&gt;&lt;font color="#666666"&gt;.&lt;/font&gt;&lt;/b&gt;getStyle&lt;b&gt;&lt;font color="#666666"&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color="#cc0000"&gt;"verticalGap"&lt;/font&gt;&lt;b&gt;&lt;font color="#666666"&gt;) *&lt;/font&gt;&lt;/b&gt;&lt;font color="#0000ff"&gt; this&lt;/font&gt;&lt;b&gt;&lt;font color="#666666"&gt;.&lt;/font&gt;&lt;/b&gt;numChildren&lt;b&gt;&lt;font color="#666666"&gt;);&lt;br /&gt;}&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I did file a bug in Adobe's Jira system. Looks like the fix might get worked into Moxie. (Thanks Deepa)&lt;br /&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5992530723198460301?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5992530723198460301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5992530723198460301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5992530723198460301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5992530723198460301'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/08/accordion-bug.html' title='accordion bug'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2558198688120054449</id><published>2007-08-24T01:02:00.000-06:00</published><updated>2007-09-29T22:09:13.927-06:00</updated><title type='text'>announcing traffic bug</title><content type='html'>Last Monday, August 20th I presented a new application that we're working on at EffectiveUI at the Adobe On Air Bus Tour stop in D.C. The new app is called Traffic Bug. I'll be doing a screen cast of the slides and posting on my blog. I'll also be using it as a talking point to continue the thread on RIA Team Development.... but in the meantime here's a first look at Traffic Bug:&lt;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="600" height="447" id="trafficbugdemo" align="middle"&gt;&lt;br /&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;br /&gt; &lt;param name="allowFullScreen" value="false" /&gt;&lt;br /&gt; &lt;param name="movie" value="http://host377.ipowerweb.com/~adamflat/blogassets/trafficbugannouce/trafficbugdemo.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt; &lt;embed src="http://host377.ipowerweb.com/~adamflat/blogassets/trafficbugannouce/trafficbugdemo.swf" quality="high" bgcolor="#ffffff" width="600" height="447" name="trafficbugdemo" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" &gt; &lt;/embed&gt;&lt;br /&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2558198688120054449?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2558198688120054449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2558198688120054449' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2558198688120054449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2558198688120054449'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/08/announcing-traffic-bug.html' title='announcing traffic bug'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5056321638212241873</id><published>2007-08-23T14:40:00.000-06:00</published><updated>2007-08-23T22:46:25.613-06:00</updated><title type='text'>binding with getters and setting</title><content type='html'>In most of the Flex apps written these days there's a need for applicattion level configuration data. It's really nice to have this data sit in an XML file on a server somewhere so that it's really easy to update. Typically I'm seeing stuff in these files like Copyright info, Terms of Service, maybe some other dynamic text for the UI, versioning and managing deprecation.. etc.  All of this data is technically read only, so it's nice to put it in a model that's read only.&lt;br /&gt;&lt;br /&gt;What I found out recently was that binding will only fire if there is both a getter and a setter. So, here's how I tackled it:&lt;br /&gt;&lt;PRE&gt;package&lt;B&gt;&lt;FONT COLOR="#666666"&gt;&lt;br /&gt;{&lt;br /&gt;[&lt;/FONT&gt;&lt;/B&gt;Bindable&lt;B&gt;&lt;FONT COLOR="#666666"&gt;]&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;&lt;br /&gt;public class MyReadOnlyConfigModel&lt;B&gt;&lt;FONT COLOR="#666666"&gt;&lt;br /&gt;{&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999999"&gt;&lt;br /&gt;  //----------------------------------&lt;br /&gt;  //  copyrightText&lt;br /&gt;  //----------------------------------&lt;br /&gt;&lt;/FONT&gt;&lt;FONT COLOR="#999999"&gt;  &lt;br /&gt;  /**&lt;br /&gt;   *  Legal mumbo jumbo to show for copyright stuff.&lt;br /&gt;   */&lt;/FONT&gt;&lt;br /&gt;  public&lt;FONT COLOR="#009900"&gt; function&lt;/FONT&gt; get copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt;() :&lt;/FONT&gt;&lt;/B&gt; String&lt;B&gt;&lt;FONT COLOR="#666666"&gt; {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt;&lt;br /&gt;&lt;br /&gt;     return this&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#666666"&gt;.&lt;/FONT&gt;&lt;/B&gt;_copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt;;&lt;br /&gt;  }&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;   private&lt;FONT COLOR="#009900"&gt; function&lt;/FONT&gt; set copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt;(&lt;/FONT&gt;&lt;/B&gt;text&lt;B&gt;&lt;FONT COLOR="#666666"&gt; :&lt;/FONT&gt;&lt;/B&gt; String&lt;B&gt;&lt;FONT COLOR="#666666"&gt;) :&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt; void&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#666666"&gt; {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt;&lt;br /&gt;&lt;br /&gt;     this&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#666666"&gt;.&lt;/FONT&gt;&lt;/B&gt;_copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt; =&lt;/FONT&gt;&lt;/B&gt; text&lt;B&gt;&lt;FONT COLOR="#666666"&gt;;&lt;br /&gt;  }&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;  private&lt;FONT COLOR="#0000FF"&gt; var&lt;/FONT&gt; _copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt; :&lt;/FONT&gt;&lt;/B&gt; String&lt;B&gt;&lt;FONT COLOR="#666666"&gt; =&lt;/FONT&gt;&lt;/B&gt; null&lt;B&gt;&lt;FONT COLOR="#666666"&gt;;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999999"&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;  //----------------------------------&lt;br /&gt;  //  setData&lt;br /&gt;  //----------------------------------&lt;br /&gt;&lt;/FONT&gt;&lt;FONT COLOR="#999999"&gt;&lt;br /&gt;  &lt;br /&gt;  /**&lt;br /&gt;   *  Sets the properties of MyReadOnlyConfigModel&lt;br /&gt;   */&lt;/FONT&gt;&lt;br /&gt;  public&lt;FONT COLOR="#009900"&gt; function&lt;/FONT&gt; setData&lt;B&gt;&lt;FONT COLOR="#666666"&gt;(&lt;/FONT&gt;&lt;/B&gt;xml&lt;B&gt;&lt;FONT COLOR="#666666"&gt; :&lt;/FONT&gt;&lt;/B&gt; XML&lt;B&gt;&lt;FONT COLOR="#666666"&gt;) :&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt; void&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#666666"&gt; {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt;&lt;br /&gt;&lt;br /&gt;     this&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#666666"&gt;.&lt;/FONT&gt;&lt;/B&gt;copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt; =&lt;/FONT&gt;&lt;/B&gt; xml&lt;B&gt;&lt;FONT COLOR="#666666"&gt;.&lt;/FONT&gt;&lt;/B&gt;copyrightText&lt;B&gt;&lt;FONT COLOR="#666666"&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/FONT&gt;&lt;/B&gt;&lt;/PRE&gt;The cool thing about this approach is that the data in the model cannot be written over, but binding will still fire and allow UI components to update automatically when the data is loaded.&lt;br /&gt;&lt;br /&gt;If you solved this problem with another solution, I'd love to hear about it.&lt;br /&gt;&lt;br /&gt;Props to &lt;a href="http://www.andymcintosh.com/"&gt;Andy&lt;/a&gt; for giving me the info on this one.&lt;br /&gt;&lt;br /&gt;Here's a quick test app to see it in action:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;?&lt;/span&gt;&lt;/b&gt;xml version&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"1.0"&lt;/span&gt; encoding&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"utf-8"&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;Application xmlns&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"http://www.adobe.com/2006/mxml"&lt;/span&gt;&lt;br /&gt;layout&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"absolute"&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;VBox&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;Text text&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"{model.copyrightText}"&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; /&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;Button label&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"set data"&lt;/span&gt; click&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"{model.setData(this.xml);}"&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;VBox&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;Script&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;&amp;lt;![&lt;/span&gt;&lt;/b&gt;CDATA&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;[&lt;br /&gt; [&lt;/span&gt;&lt;/b&gt;Bindable&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; private&lt;span style="color: rgb(0, 0, 255);"&gt; var&lt;/span&gt; model&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; :&lt;/span&gt;&lt;/b&gt; MyReadOnlyConfigModel&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; =&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;    new&lt;/span&gt; MyReadOnlyConfigModel&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; private&lt;span style="color: rgb(0, 0, 255);"&gt; var&lt;/span&gt; xml&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; :&lt;/span&gt;&lt;/b&gt; XML&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; =&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;/b&gt;xml&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;       &amp;lt;&lt;/span&gt;&lt;/b&gt;copyrightText&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this is&lt;/span&gt; a copyright&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;/&lt;/span&gt;&lt;/b&gt;copyrightText&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;/b&gt;xml&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;Script&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;/b&gt;mx&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt;&lt;/b&gt;Application&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5056321638212241873?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5056321638212241873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5056321638212241873' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5056321638212241873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5056321638212241873'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/08/binding-with-getters-and-setting.html' title='binding with getters and setting'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-6862761625865747865</id><published>2007-08-03T09:23:00.000-06:00</published><updated>2007-08-23T23:04:48.957-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nvc cairngorm flex air ria'/><title type='text'>team ria development - part 2 - mvc - part 1</title><content type='html'>My posts on team development will start from a beginners understanding of programming, working up to an advanced look at architecture and design. &lt;br /&gt;&lt;br /&gt;First thing’s first: What’s this MVC thing? &lt;br /&gt;&lt;br /&gt;MVC stands for Model-view-controller. MVC aims to separate, or decouple, data (model) from the user interface (view) and functional logic (controller). You can read a lot more about MVC on the &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;How do we use MVC in an RIA (specifically a Flex app)?&lt;br /&gt;&lt;br /&gt;Well thought out architecture and design is important at every level of the application, but an RIA is different than a web app of the past in one important way: state. In legacy (HTML script-based) web apps state is, for the most part, required to live on the server. In RIA development we are not bound by this requirement. We can build RIAs that have state at the client or the server or a hybrid of both. This one fact completely changes the complexity and importance of what once was merely the view. In RIA development the part of our application that lives at the client level is not just an HTML rendering of a view, it can be a fully functional stand alone application. The client in a RIA has many of the characteristics of a desktop application and that is why MVC applies at this level. &lt;br /&gt;&lt;br /&gt;Why is this called a micro-architecture?&lt;br /&gt;&lt;br /&gt;We refer to architecture and design patterns at the Flex level as a mirco-architecture frameworks because the Flex application is a piece in the larger picture of the entire application. The Flex app may talk to one or more web services, consume an RSS feed, stream video, show images from the web, and so on. All of these services fit into the larger architecture of the web app. These architectural decisions are also important but a little harder to talk about generically. So, since this is a Flex blog, when I speak of architecture I’ll really be talking about client micro-architecture.&lt;br /&gt;&lt;br /&gt;Why do you want to use a micro-architecture?&lt;br /&gt;&lt;br /&gt;Actually, sometimes you don’t. If you’re creating a very simple app (something like a widget or a banner ad) MVC might not be for you. However, if you’re creating something that models data retrieved from a service, allowing the user to manipulate that data, and displaying the data in interesting ways... MVC is really a good choice to make.&lt;br /&gt;&lt;br /&gt;What you get:&lt;br /&gt;&lt;br /&gt; 1. A code base that facilitates team development.&lt;br /&gt; 2. A skill that will make your team more agile in their development life cycles.&lt;br /&gt; 3. Source that has a high level of maintainability and interoperability.&lt;br /&gt;&lt;br /&gt;Ok.. let me unpack those a bit.&lt;br /&gt;&lt;br /&gt;1. Your code base will facilitate team development most simply because the team is now coding to a convention. MVC isn’t really the big deal here, it’s the fact that a convention was decided on. MVC does offer some nice things in regards to team development that I’ll talk about in other posts, but my point here is that convention keeps everyone on the same page.&lt;br /&gt;&lt;br /&gt;2. Every learn how to play an instrument or a sport? Each of these skills involves mastering patterns. The more your team implements on the patterns in MVC, the better skilled they will be at it. My point here is really that MVC should also be viewed as a problem solving tool. When you get developers thinking about solving architectural problems in the same way, everyone can solve that problem faster. &lt;br /&gt;&lt;br /&gt;3. Maintainability and interoperability... again this really goes back to convention. Your code will be more maintainable by your dev team if it’s built on convention. If you chose a convention that’s fairly mainstream, then you gain a level of developer interoperability. Meaning, training in a new team members on the way you implement requirements will be a lot easier if your using a convention and on top of that a standard convention. In Flex development, Cairngorm is a nice way to go. It’s not necessarily the best framework out there, but it seems to be the most widely adopted Flex micro-architecture.  &lt;br /&gt;&lt;br /&gt;I’ll be delving deeper into MVC and Cairngorm in my next posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-6862761625865747865?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/6862761625865747865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=6862761625865747865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6862761625865747865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/6862761625865747865'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/08/team-ria-development-part-2-mvc-part-1.html' title='team ria development - part 2 - mvc - part 1'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5121376405403719193</id><published>2007-08-01T19:34:00.001-06:00</published><updated>2007-08-01T19:35:11.637-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex ria air apollo mvc cairngorm'/><title type='text'>team ria development - part 1</title><content type='html'>In the past year or so I’ve been playing the role of technical lead / architect on most of the Flex projects I’ve been working on. Usually this involves a team of 3-6 developers and 1-3 designers. The focus of my blog over the next few months will be to pass on the tips and tricks that I’ve learned as a lead developer working with other developers and designers, the bosses as well; PMs, technical managers, QA managers, customers... et al. &lt;br /&gt;&lt;br /&gt;To get started a few tips:&lt;br /&gt;&lt;br /&gt;- Use source control. &lt;br /&gt;&lt;br /&gt;At EffectiveUI we typically use SVN repositories, but choosing the right technology isn’t really as important as making the choice to use source control. Also, make sure your source control servers are redundant, or someday you might wish you had.&lt;br /&gt;&lt;br /&gt;- Create an easy designer developer workflow.&lt;br /&gt;&lt;br /&gt;In the world of RIAs the ability to stay agile within a life cycle of a project hinges on this point. If getting from design to an implementation of that design is anything less than nimble, you’ll feel some pain.&lt;br /&gt;&lt;br /&gt;- Patterns, paradigms, and frameworks... oh my&lt;br /&gt;&lt;br /&gt;Select and use a micro-architecture that makes sense for your dev group and/or application. Cairngorm is one of the more popular micro-architectures used in Flex development, it’s what we use at EUI. &lt;br /&gt;&lt;br /&gt;The benefit and problem with most Flex micro-architectures is: keeping the framework light weight and simple also means that (while providing flexibility) they do not provide enforceability. In some areas this is, arguably, a good thing and in others it’s not so good. &lt;br /&gt;&lt;br /&gt;Needless to say, most of my posts will focus on Cairngorm and how we have used and tweaked it to create a good software design as well as an agile development environment.&lt;br /&gt;&lt;br /&gt;Stay tuned for more.... &lt;br /&gt;-adam&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5121376405403719193?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5121376405403719193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5121376405403719193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5121376405403719193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5121376405403719193'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/08/team-ria-development-part-1.html' title='team ria development - part 1'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3553730108265644707</id><published>2007-06-12T12:50:00.000-06:00</published><updated>2007-06-12T12:55:50.271-06:00</updated><title type='text'>eBay DevCon Slides and Source Code</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Thanks to everyone that attended my talk at eBay DevCon 2007. As promised, I'm releasing the slides and source code from the presentation. [&lt;a href="http://effectiveui.com/adam/building_an_ebay_widget_ebay_devcon_2007_adam_flater.zip"&gt;Download&lt;/a&gt;]&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you have any questions about the eBay ActionScript SDK, Flex 2.0, or AIR (Apollo) feel free to post a comment on this blog or contact me directly at: &lt;a href="mailto:adam.flater@effectiveui.com"&gt;adam.flater@effectiveui.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Thanks again&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;-adam&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3553730108265644707?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3553730108265644707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3553730108265644707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3553730108265644707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3553730108265644707'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/06/ebay-devcon-slides-and-source-code.html' title='eBay DevCon Slides and Source Code'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-3488688400254043096</id><published>2007-04-20T12:21:00.000-06:00</published><updated>2007-04-20T12:34:38.738-06:00</updated><title type='text'>presenting at eBay developers conference</title><content type='html'>&lt;span style="font-family:verdana;"&gt;I'll be presenting at the eBay Developers Conference on June 12th in Bosoton. My topic will be on using the eBay ActionScript SDK to create eBay Widgets. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I was the lead develoepr on the eBay ActionScript SDK project. (Read more on Ryan Stewart's Blog: &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://blogs.zdnet.com/Stewart/?p=302"&gt;http://blogs.zdnet.com/Stewart/?p=302&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;) This project leverages the Apache Axis toolkit to generate web service call objects for the eBay WSDL specification. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The conference will be a great time to bring questions about the SDK. Also, for those of you new to Flex technology stop by and see what's it's all about. My presentation will mainly conssit of walking through examples of coding widgets that use the SDK. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hope to see you there.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-3488688400254043096?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/3488688400254043096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=3488688400254043096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3488688400254043096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/3488688400254043096'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/04/presenting-at-ebay-developers.html' title='presenting at eBay developers conference'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7628620421080689449</id><published>2007-03-26T20:13:00.000-06:00</published><updated>2007-03-29T13:21:24.578-06:00</updated><title type='text'>dx3 conference - speaking on artemis</title><content type='html'>&lt;span style="font-family:verdana;"&gt;DX3 stands for : Design, Develop, Deploy.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;DX3 is a new conferences geared towards designers and developers that are developing RIAs (Rich Internet Applications) that reach beyond the browser.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I'll be co-presenting at this conference with my collegue at effectiveUI Sean Christmann on The Artemis Project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Sean and I'll will be presenting the need and use for Artemis in deploying web applications the run on the desktop platform.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;You can read more about Artemis in my previous post or check it out on the web : &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://artemis.effectiveui.com/"&gt;http://artemis.effectiveui.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;You can find out more about DX3 at : &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.dx3conference.com/"&gt;http://www.dx3conference.com&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://dx3conference.com/speakers?name=adam_flater"&gt;http://dx3conference.com/speakers?name=adam_flater&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://dx3conference.com/sessions?sid=85"&gt;http://dx3conference.com/sessions?sid=85&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you're attending the conference and have a topic that you'd like us to cover feel free to let me know : &lt;/span&gt;&lt;a style="font-family: verdana;" href="mailto:adam.flater@effectiveui.com"&gt;adam.flater@effectiveui.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7628620421080689449?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7628620421080689449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7628620421080689449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7628620421080689449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7628620421080689449'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/03/dx3-conference-speaking-on-artemis.html' title='dx3 conference - speaking on artemis'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-1105041737241243549</id><published>2007-03-20T10:44:00.001-06:00</published><updated>2007-03-20T23:16:00.094-06:00</updated><title type='text'>Η ιστορία Artemis (The Story of Artemis)</title><content type='html'>&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;Artemis&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; began as a proof of concept. One day, about 4 weeks ago I was working away in my office at &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.effectiveui.com/"&gt;effectiveUI&lt;/a&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; when one of my bosses (although I'm sure he would object to that title), Brook, asked me about the feasibility of an application for a potential client. This is not an odd thing working at &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.effectiveui.com/"&gt;effectiveUI&lt;/a&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; since the work we do is on RIAs and cutting edge internet apps. This particular client needed some desktop functionality that we were brainstorming about using &lt;/span&gt;&lt;/span&gt;&lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Apollo&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; for. That discussion got me thinking about using java to extend the functionality of &lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Apollo&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;So, I worked up a quick proof of concept that showed the java system properties in a DataGrid of an &lt;/span&gt;&lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Apollo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; app.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;After I showed this prototype to Brook we chatted a bit more about the implications. Brook and I both have java backgrounds and have had some experience with Swing. After gaining exposure to the tools for buidling interfaces that are available with Adobe's &lt;a href="http://www.tryflex2.com/"&gt;Flex&lt;/a&gt; we both knew that going back to something like Swing would be really painful. This led us to the idea of building a framework for java developers that would give them all the benefits of building UIs in Flex and writing their core code in java. Also, to allow Flex developers to have access to the myriad of java libraries that are commercially available as well as libraries available in the open source community.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;Enter &lt;/span&gt;&lt;a href="http://thillerson.wordpress.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Tony Hillerson&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; : "&lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;" is born. &lt;/span&gt;&lt;a href="http://thillerson.wordpress.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Tony&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; came up with the name &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;. For those of you not hip to Greek Mythology, &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; was the twin sister of &lt;/span&gt;&lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Apollo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; (Wikipedia: &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Artemis"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;, &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Apollo"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Apollo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;). After Tony and I worked out the software design for the &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; Framework we decided that he would focus on installation / deployment / class loading issues and I would tackle the communication protocols.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;Not long after Sean Christman came into the mix. Sean had the idea of making the "wow" demo of &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;: Controlling a Flash game with a wii remote. So he did:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;&lt;p&gt; &lt;span style="text-align: center; display: block;"&gt;&lt;object type="application/x-shockwave-flash" data="http://video.google.com/googleplayer.swf?docId=645276604533750389" height="326" width="400"&gt;&lt;param name="allowScriptAccess" value="never"&gt;&lt;param name="movie" value="http://video.google.com/googleplayer.swf?docId=645276604533750389"&gt;&lt;param name="quality" value="best"&gt;&lt;param name="bgcolor" value="#ffffff"&gt;&lt;param name="scale" value="noScale"&gt;&lt;param name="wmode" value="window"&gt;&lt;/object&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;Sean's presentation at &lt;/span&gt;&lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Apollo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; Boot Camp definitely wowed audiences and brought the &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; name to the developer community. Sean is also spear heading the community aspect of &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;. He came up with the idea to get the developer community involved in &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; by contributing with &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; libraries that could be used in the framework.&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;The Future of &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;We're furiously working on getting the framework out of Alpha and into Beta. In the meantime, very soon you'll be able to download samples and screencasts that demonstrate what &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; can do. I'll be posting announcements of these releases here on my blog.&lt;br /&gt;&lt;br /&gt;If you're a developer and would like to get in on Alpha development of &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt; libraries please contact &lt;/span&gt;&lt;a href="http://thillerson.wordpress.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Tony&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;, Sean, or me (&lt;/span&gt;&lt;a href="mailto:adam.flater@effectiveui.com"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;adam.flater@effectiveui.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;). &lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div   style="margin: 0px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 15px; color: rgb(0, 0, 0); font-family: verdana;font-family:Times New Roman;font-size:12px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;Other reading about &lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://blogs.zdnet.com/Stewart/?p=313"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://blogs.zdnet.com/Stewart/?p=313"&gt;Ryan Stewart's blog&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; on &lt;/span&gt;&lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://thillerson.wordpress.com/2007/03/17/artemis/%20"&gt;Tony's blog&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; on &lt;/span&gt;&lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="margin: 0px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://anthonyfranco.wordpress.com/"&gt;Athnoy's blog&lt;/a&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt; on &lt;/span&gt;&lt;/span&gt;&lt;a href="http://artemis.effectiveui.com/"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;Artemis&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p  style="margin: 0px; min-height: 14px; color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px; min-height: 14px; font-family: verdana; color: rgb(0, 0, 0);"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-1105041737241243549?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/1105041737241243549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=1105041737241243549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1105041737241243549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/1105041737241243549'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/03/artemi-story-of-artemis.html' title='Η ιστορία Artemis (The Story of Artemis)'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5765452560097708400</id><published>2007-03-04T16:47:00.000-07:00</published><updated>2007-03-04T17:05:52.952-07:00</updated><title type='text'>abstract classes in Flex</title><content type='html'>&lt;span style="font-family:verdana;"&gt;I recently found the need to implement an Abstract Class in a package I was writing for an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SDK&lt;/span&gt;. When I searched out the methods that others had used in an attempt to "fake" an Abstract Class I felt they fell short. Most of the other solutions involve protecting the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;constructor&lt;/span&gt; of the Abstract Class so that it may only be instantiated by a child class. That's pretty close, but what those solutions left out was the ability to defined abstract properties and functions. Here's what my solution looks like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The Abstract Class:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;package &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;abstractclass&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;exanple&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;import&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;abstractclass&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;util&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;AbstractClassUtils&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;import&lt;/span&gt; flash&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;utils&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;describeType&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ExampleAbstractClass&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt; public function&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ExampleAbstractClass&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;() {&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;AbstractClassUtils&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;enforceAbstractClass&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;           this&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;,&lt;/span&gt;&lt;/b&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;ExampleAbstractClass&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;        AbstractDefinitions&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;import&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;mx&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;controls&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Button&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;import&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;mx&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;core&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;UIComponent&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;AbstractDefinitions&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt; {&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;   public static var&lt;/span&gt; THIS_STATIC_PROPERTY&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;UIComponent&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;   public var&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;thisNonStaticProperty&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;   public static function&lt;/span&gt; test&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;name&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;,&lt;/span&gt;&lt;/b&gt; val&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;) :&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; int&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt; {&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;   public function&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;nonStatic&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;(&lt;/span&gt;&lt;/b&gt;blah&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Button&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;) :&lt;/span&gt;&lt;/b&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;UIComponent&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt; {&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; null&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;span style="font-family:verdana;"&gt;As you can see, the abstract properties and methods are defined in an inner class called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;AbstractDefinitions&lt;/span&gt;. These definitions are enforced by the call to&lt;/span&gt;&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;AbstractClassUtils&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;enforceAbstractClass&lt;/span&gt;()&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;in the constructor. Any sub classes are forced to implement these properties and methods. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;How it works... The utility class uses introspection to ensure that the Objects are defined correctly. Introspection can be a fairly expensive operation, so use this method with care. You can always removed the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;enforceAbstractClass&lt;/span&gt; call when you put the code into production.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you'd like to use this technique in your own apps, you can download my utility here: &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.adamflater.com/blogassets/abstractclass/abstractclass.swc"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;abstractclass&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;swc&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5765452560097708400?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5765452560097708400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5765452560097708400' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5765452560097708400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5765452560097708400'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/03/abstract-classes-in-flex.html' title='abstract classes in Flex'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-7272377303341987150</id><published>2007-03-04T16:16:00.000-07:00</published><updated>2007-03-04T16:37:57.096-07:00</updated><title type='text'>[non-flex] app launchers: QuickSilver, Colibri, Katapult</title><content type='html'>&lt;span style="font-family:verdana;"&gt;A quick non-Flex related post about some great tools.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Recently, I've found myself using Mac OS, Linux, and Windows all fairly frequently. I switched to Mac OS as my development OS not long ago. QuickSilver was recommended to me not long after I made the switch. I found QuickSilver to be one of the huge benefits of Mac OS.&lt;br /&gt;&lt;br /&gt;Back in the Windows days I was a big user [Windows Key]+R to launch apps and commands quickly. After I was introduced to QuickSilver on Mac OS I did some checking to see if equivalent applications existed for other platforms. I found Colibri for windows and Katapult for Linux (KDE).&lt;br /&gt;&lt;br /&gt;All three of these applications are invaluable to making your life easier in finding files and applications on your systems. Give them a try and you'll quickly find out why. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Mac OS:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://quicksilver.blacktree.com/"&gt;http://quicksilver.blacktree.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Windows:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://colibri.leetspeak.org/"&gt;http://colibri.leetspeak.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Linux:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://sourceforge.net/projects/katapult/"&gt;http://sourceforge.net/projects/katapult/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-7272377303341987150?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/7272377303341987150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=7272377303341987150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7272377303341987150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/7272377303341987150'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/03/non-flex-app-launchers-quicksilver.html' title='[non-flex] app launchers: QuickSilver, Colibri, Katapult'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-2725319548594508758</id><published>2007-03-02T12:26:00.000-07:00</published><updated>2007-03-02T12:49:00.911-07:00</updated><title type='text'>static code blocks!</title><content type='html'>&lt;span style="font-family:verdana;"&gt;If you're coming to the Flex world as a java user one thing you might miss is static code blocks. Until today I didn't think this was possible in Flex/AS 3, but after a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;conversation&lt;/span&gt; with a coworker  (Jim : &lt;a href="http://www.psalterego.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;psalterego&lt;/span&gt;.com&lt;/a&gt;) I found out static code blocks are possible.&lt;br /&gt;&lt;br /&gt;First off, let me give a quick example of a static code block in java:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;public class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;StaticCodeBlockExample&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt; {&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;static&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt; {&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;br /&gt;     // my static code&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(102, 0, 153);"&gt;   }&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;span style="font-family:verdana,mon;"&gt;The code inside the static block is run when &lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;StaticCodeBlockExample&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana,mon;"&gt;&lt;span style=""&gt;&lt;span style="font-family:verdana;"&gt;is loaded. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;Among&lt;/span&gt; other tasks, this concept is pretty handy for initializing any static properties that might depend on utility classes to setup.&lt;br /&gt;&lt;br /&gt;The AS 3 &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;equivalent&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;PRE&gt;package&lt;B&gt;&lt;FONT COLOR="#660099"&gt;&lt;br /&gt;{&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br /&gt;   import&lt;/FONT&gt; mx&lt;B&gt;&lt;FONT COLOR="#660099"&gt;.&lt;/FONT&gt;&lt;/B&gt;managers&lt;B&gt;&lt;FONT COLOR="#660099"&gt;.&lt;/FONT&gt;&lt;/B&gt;ISystemManager&lt;B&gt;&lt;FONT COLOR="#660099"&gt;;&lt;br /&gt;   &lt;br /&gt;   [&lt;/FONT&gt;&lt;/B&gt;Mixin&lt;B&gt;&lt;FONT COLOR="#660099"&gt;]&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br /&gt;&lt;br /&gt;   public class&lt;/FONT&gt; StaticCodeBlockExample&lt;B&gt;&lt;FONT COLOR="#660099"&gt;&lt;br /&gt;   {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br /&gt;      public static function&lt;/FONT&gt; init&lt;B&gt;&lt;FONT COLOR="#660099"&gt;(&lt;/FONT&gt;&lt;/B&gt;systemManager&lt;B&gt;&lt;FONT COLOR="#660099"&gt;:&lt;/FONT&gt;&lt;/B&gt;ISystemManager&lt;B&gt;&lt;FONT COLOR="#660099"&gt;) :&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt; void&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#660099"&gt; {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt;&lt;br /&gt;&lt;br /&gt;         trace&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#660099"&gt;(&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#009900"&gt;"my static code block"&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#660099"&gt;);&lt;br /&gt;      }&lt;br /&gt;      &lt;br /&gt;   }&lt;br /&gt;}&lt;/FONT&gt;&lt;/B&gt;&lt;/PRE&gt;&lt;span style=""&gt;&lt;span style="font-family:verdana;"&gt;As long as this class is referenced somewhere in your application, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;init&lt;/span&gt; method gets called when the application is starting up. Essentially, we have a static code block!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-2725319548594508758?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/2725319548594508758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=2725319548594508758' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2725319548594508758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/2725319548594508758'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/03/static-code-blocks.html' title='static code blocks!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-9116544083721157327</id><published>2007-03-01T18:26:00.000-07:00</published><updated>2007-03-01T18:33:45.656-07:00</updated><title type='text'>effectiveUI eBay Project in the News!</title><content type='html'>My colleage, Sean Christmann, lead developer on the eBay Desktop application I've been working on, was quoted several times in an InfoWorld article about Adobe's new Apollo framework. Check it out: &lt;a href="http://www.infoworld.com/article/07/03/01/HNadobeapollobeta_1.html"&gt;http://www.infoworld.com/article/07/03/01/HNadobeapollobeta_1.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-9116544083721157327?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/9116544083721157327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=9116544083721157327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/9116544083721157327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/9116544083721157327'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/03/effectiveui-ebay-project-in-news.html' title='effectiveUI eBay Project in the News!'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2814003665874097395.post-5288484944303685998</id><published>2007-02-13T17:05:00.000-07:00</published><updated>2007-02-14T00:41:15.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex ria as3 as2 actionscript code highlighting'/><title type='text'>on source code...</title><content type='html'>&lt;span style=";font-family:verdana;"  &gt;As I was stepping into the tech blog posting arena I had a major concern: How to deal with posting source code.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Here are the solutions that I came up with:&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;"  &gt;A simple solution is to surround your source code in a PRE tag. (&lt;/span&gt;&lt;span style=""&gt;&lt;a style="font-family: verdana;" href="http://www.w3.org/TR/html401/struct/text.html#edef-PRE"&gt;PRE tag defined.&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;"  &gt;)&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;"  &gt;PRE Tag source code:&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;package com.eui.sourcecodeblog&lt;br /&gt;{&lt;br /&gt; public class Foo&lt;br /&gt; {&lt;br /&gt;  public function Foo() {&lt;br /&gt;   super();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/pre&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;This solution isn't bad for starters. In most browers you should see the text in a mono-spaced font as well as pre-formatting with regards to spaces.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In addition to using PRE we can wrap our PRE elements in a DIV tag. Setting the width and overflow styles of the DIV will prodcue a box that's friendly to your particular blog template.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;PRE tag with DIV tag source code:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&amp;lt;div style="overflow: scroll; width: 350px;"&amp;gt;&lt;br /&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;package com.eui.sourcecodeblog&lt;br /&gt;{&lt;br /&gt; public class Foo&lt;br /&gt; {&lt;br /&gt;  public function Foo() {&lt;br /&gt;   super();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;PRE tag with DIV tag example:&lt;div style="margin-left: 20px; margin-right: 20px; padding-left: 15px; padding-right: 15px; overflow: scroll;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package com.eui.sourcecodeblog&lt;br /&gt;{&lt;br /&gt; public class Foo&lt;br /&gt; {&lt;br /&gt;  public function Foo() {&lt;br /&gt;   super();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This is actually a pretty good outcome with little HTML coding. You could even move the style properties to a CSS class defined in your blog template code. This would make coding the DIV tag a bit easier.&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:verdana;"  &gt;Pretty good, but still not quite as satisfing as my final solution for posting source code.&lt;br /&gt;&lt;br /&gt;Spacing isn't the only thing that makes source code easy to read. For me, the text colorization is essential to reading plesant looking source code. To achieve colorization there's just one more step. I chooe to use a converter found at: &lt;a href="http://www.riarock.com/as2html/as2html.htm"&gt;http://www.riarock.com/as2html/as2html.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Using the AS2HTML Color Converter:&lt;pre&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;   1. Paste your source code into the text box&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;   2. Select "Generate old (non-valid) HTML using font color tags"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;   2. Click convert&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;   3. View source on the generated page&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;   4. Copy the genereated HTML code inside the BODY tag&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It should look something like this:&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 20px; margin-right: 20px; padding-left: 15px; padding-right: 15px; overflow:scroll;"&gt;&lt;br /&gt;&lt;pre&gt;package com&amp;lt;B&amp;gt;&amp;lt;FONT COLOR="#660099"&amp;gt;.&amp;lt;/FONT&amp;gt;&amp;lt;/B&amp;gt;eui&amp;lt;B&amp;gt;&amp;lt;FONT COLOR="#660099"&amp;gt;.&amp;lt;/FONT&amp;gt;&amp;lt;/B&amp;gt;sourcecodeblog&amp;lt;B&amp;gt;&amp;lt;FONT COLOR="#660099"&amp;gt;&lt;br /&gt;&lt;br /&gt;{&amp;lt;/FONT&amp;gt;&amp;lt;/B&amp;gt;&amp;lt;FONT COLOR="#FF0000"&amp;gt;&lt;br /&gt;   public class&amp;lt;/FONT&amp;gt; Foo&amp;lt;B&amp;gt;&amp;lt;FONT COLOR="#660099"&amp;gt;&lt;br /&gt;   {&amp;lt;/FONT&amp;gt;&amp;lt;/B&amp;gt;&amp;lt;FONT COLOR="#FF0000"&amp;gt;&lt;br /&gt;      public function&amp;lt;/FONT&amp;gt; Foo&amp;lt;B&amp;gt;&amp;lt;FONT COLOR="#660099"&amp;gt;() {&amp;lt;/FONT&amp;gt;&amp;lt;/B&amp;gt;&amp;lt;FONT COLOR="#0000FF"&amp;gt;&lt;br /&gt;         super&amp;lt;/FONT&amp;gt;&amp;lt;B&amp;gt;&amp;lt;FONT COLOR="#660099"&amp;gt;();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;}&amp;lt;/FONT&amp;gt;&amp;lt;/B&amp;gt;&amp;lt;/PRE&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;span style=""&gt;&lt;span style="font-family:verdana;"&gt;The final outcome (including our div tag from the previous example wtih a few added style properties):&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: scroll; margin-left: 20px; margin-right: 20px; padding-left: 15px; padding-right: 15px; background-color: rgb(239, 239, 239);"&gt;&lt;PRE&gt;package com&lt;B&gt;&lt;FONT COLOR="#660099"&gt;.&lt;/FONT&gt;&lt;/B&gt;eui&lt;B&gt;&lt;FONT COLOR="#660099"&gt;.&lt;/FONT&gt;&lt;/B&gt;sourcecodeblog&lt;B&gt;&lt;FONT COLOR="#660099"&gt;&lt;br /&gt;&lt;br /&gt;{&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br /&gt;   public class&lt;/FONT&gt; Foo&lt;B&gt;&lt;FONT COLOR="#660099"&gt;&lt;br /&gt;   {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br /&gt;      public function&lt;/FONT&gt; Foo&lt;B&gt;&lt;FONT COLOR="#660099"&gt;() {&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#0000FF"&gt;&lt;br /&gt;         super&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#660099"&gt;();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;/FONT&gt;&lt;/B&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you're feeling adventurous, it's not too difficult to re-style the coloring done by AS2HTML. Just skip step 2 above and then inspect the generated HTML. You'll need to add the CSS classes in the head of this document to your blog site's template.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2814003665874097395-5288484944303685998?l=adamflater.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamflater.blogspot.com/feeds/5288484944303685998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2814003665874097395&amp;postID=5288484944303685998' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5288484944303685998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2814003665874097395/posts/default/5288484944303685998'/><link rel='alternate' type='text/html' href='http://adamflater.blogspot.com/2007/02/on-source-code.html' title='on source code...'/><author><name>Adam Flater</name><uri>http://www.blogger.com/profile/18224648613573489463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>
