<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.blogna.org/blog/wp-atom.php">
	<title type="text">BLOGNA.org</title>
	<subtitle type="text">All things web dev, from design to deployment (and EVERYTHING in between).</subtitle>

	<updated>2009-04-02T19:00:51Z</updated>
	<generator uri="http://wordpress.org/" version="2.7">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://www.blogna.org/blog" />
	<id>http://www.blogna.org/blog/feed/atom/</id>
	

			<link rel="self" href="http://feeds.feedburner.com/blogna" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[30 MORE Awesome Open Source AS3 Libraries]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/UeEt8w_nx-Y/" />
		<id>http://www.blogna.org/blog/?p=559</id>
		<updated>2009-04-02T19:00:51Z</updated>
		<published>2009-03-31T13:44:09Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe AIR" /><category scheme="http://www.blogna.org/blog" term="Adobe Flash" /><category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Dev Resources" />		<summary type="html"><![CDATA[In my previous post, 30+ Must Try Open Source Actionscript 3 Libraries, I noted that the community involvement around the Flash Platform is awesome.  There are open source AS3 projects everywhere!  Below is another list of 30 libraries for your coding pleasure.
If you can think of any other good ones that I missed, [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flash/30-more-awesome-open-source-as3-libraries/">&lt;p&gt;In my previous post, &lt;a href="http://www.blogna.org/blog/adobe-flash/30-must-try-open-source-actionscript-3-libraries/"&gt;30+ Must Try Open Source Actionscript 3 Libraries&lt;/a&gt;, I noted that the community involvement around the Flash Platform is awesome.  There are open source AS3 projects everywhere!  Below is another list of 30 libraries for your coding pleasure.&lt;/p&gt;
&lt;p&gt;If you can think of any other good ones that I missed, please post them in the comments!&lt;/p&gt;
&lt;p&gt;&lt;span id="more-559"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.cove.org/ape/index.htm"&gt;APE Actionscript Physics Engine&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Alec Cove&lt;br /&gt;
APE (Actionscript Physics Engine) is a free AS3 open source 2D physics engine for use in Flash and Flex.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/ascollada/"&gt;ASCollada&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Tim Knip&lt;br /&gt;
An actionscript library for parsing Collada files.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3ds/"&gt;AS3 Data Structures For Game Developers&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Michael Baczynski&lt;br /&gt;
A library containing data structures optimized for game development with Adobe Flash and Actionscript 3.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3isolib/"&gt;AS3 Isometric Library (as3isolib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; jwopitz?&lt;br /&gt;
As3isolib is an open-source ActionScript 3.0 Isometric Library developed to assist in creating isometrically projected content (such as games and graphics) targeted for the Flash player platform. As3isolib includes utilities, primitives and views. As3isolib was developed with simplicity, speed and performance in mind so that developers can focus on actual implementations rather than having to learn a complex API.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/away3d/"&gt;Away3D&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Alexander Zadorozhny and Rob Bateman&lt;br /&gt;
Away3D is a realtime 3d engine for flash in ActionScript 3.0.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.boostworthy.com/blog/?p=170"&gt;Boostworthy Animation System v2.0&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Ryan Taylor&lt;br /&gt;
As a developer, you need a powerful animation tool that can provide you with both simplicity and complexity at the same time. You need a clearly defined API for auto-completion; one that is nicely documented to make your life easier. That is what the Boostworthy Animation System v2.0 release is all about.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://box2dflash.sourceforge.net/"&gt;Box2D Flash AS3&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Matthew Bush&lt;br /&gt;
Box2DFlashAS3 is an open source port of Erin Catto's powerful c++ physics library Box2D.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/btween/"&gt;BTween&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; pedromoraes, maurodetarso, netoleal&lt;br /&gt;
Another AS3 Tweening library.  &lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/bulk-loader/"&gt;BulkLoader&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Arthur Debert&lt;br /&gt;
BulkLoader is a minimal library written in Actionscript 3 (AS3) that aims to make loading and managing complex loading requirements easier and faster. BulkLoader takes a more dynamic, less architecture heavy aproach. Few imports and making heavy use of AS3's dynamic capabilities, BulkLoader has a one-liner feel that doesn't get in your way.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://casalib.org/"&gt;CASA Lib&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Aaron Clinger, Mike Creighton&lt;br /&gt;
CASA Lib is a flexible ActionScript library designed to streamline common chores and act as a solid, reliable foundation for your projects. It provides a core set of classes, interfaces, and utilities to get you coding faster and more reliably without getting in the way.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3ebaylib/"&gt;eBay AS3 Library&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Charles Bihis, Mike Potter, Darron Schall, Mike Chambers, Alan Lewis&lt;br /&gt;
The eBay ActionScript 3.0 library provides an interface between the eBay XML API and ActionScript 3.0. This open-source library will allow developers to create novel and innovative applications leveraging both eBay's marketplace services and Adobe's Flash Player 9 runtime! It is written in ActionScript 3.0, so any environment using ActionScript 3.0 can use this library, including Adobe Flex 2 and Adobe Flash Pro 9.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.libspark.org/wiki/saqoosha/FLARToolKit/en"&gt;FLAR Toolkit&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt;?&lt;br /&gt;
FLARToolkit will detect the marker from input image and calculate the camera position in the three dimension space. Something like Helper library are planned to add but further processing like synthesize the 3D Graphics needs to implemented by yourself.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://flare.prefuse.org/"&gt;Flare&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; ?&lt;br /&gt;
Flare is an ActionScript library for creating visualizations that run in the Adobe Flash Player. From basic charts and graphs to complex interactive graphics, the toolkit supports data management, visual encoding, animation, and interaction techniques. Even better, flare features a modular design that lets developers create customized visualization techniques without having to reinvent the wheel.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/flest/"&gt;Flest&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Ivan Petrov&lt;br /&gt;
Flest is an ActionScript3 / Flex application framework for building enterprise level RIAs. It uses such design pattern as Controller, Factory, Command, etc. High efficiency, simplicity and practicality were set as its mandatory design features.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/foam-as3/"&gt;Foam AS3&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Drew Cummins&lt;br /&gt;
FOAM is a two-dimensional rigid body physics engine written in ActionScript 3.0.  It is meant as an architectural and mathematical reference for developers interested in physics simulation in the area of game development or otherwise. It trades efficiency for modularity and extensibility.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.goasap.org/"&gt;GoASAP&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Moses Gunesch&lt;br /&gt;
It’s a versatile, generic base library for building animation tools in AS3. A tweening kit?&lt;br /&gt;
Totally not. Go isn’t a kit that tries to do it all, but in a geeky way is actually much more exciting: it enables any AS3 coder to build a rock-solid animation library of your own design! So instead of being stuck with one kit’s set of limitations, you’ll be able to constantly expand your own set of tools for each project – keeping you engaged and inventive. Go is made for creative coders and R-&amp;-D-ready teams.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.gskinner.com/libraries/gtween/"&gt;GTween&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Grant Skinner&lt;br /&gt;
GTween Tweening and Animation Library for ActionScript 3.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/gtweener/"&gt;GTweener&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Joshua Granick&lt;br /&gt;
GTween + Tweener = GTweener.  GTween includes more features and operates faster than Tweener. That is why I combined the best qualities of both into one library.  Personal tests showed that GTweener adds only a nominal amount of overhead to GTween. Performance using GTweener compared to GTween and other popular libraries, and was nearly three times faster than using Tweener.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/jiglibflash/"&gt;JigLibFlash&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; muzerly and speedok&lt;br /&gt;
JigLibFlash is a open source Actionscript 3D Physics Engine.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/kitchensynclib/"&gt;KitchenSync&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Mims Wright&lt;br /&gt;
KitchenSync is an ActionScript 3.0 library for sequencing animations and other time-based actions. KitchenSync is more than an animation library.  It 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;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://lab.polygonal.de/2007/12/31/motor-physics-released/"&gt;Motor Physics&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Michael Baczynski&lt;br /&gt;
An rigid-body, iterative, impulse-based 2D physics engine for ActionScript 3 based on Box2D.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.bytearray.org/?p=91"&gt;Mouse Gesture Recognition&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Didier Brun&lt;br /&gt;
A simple implementation of a mouse gesture recognition algorithm.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.spicefactory.org/parsley/index.php"&gt;Parsley Framework&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Jens Halm&lt;br /&gt;
Parsley is an application framework for Flex/Flash/AIR applications written in AS3. &lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3preferenceslib/"&gt;Preferences Library (as3preferenceslib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Christian Cantrell&lt;br /&gt;
An AIR library for storing preferences. It takes care of persistence and even encryption for you.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.flashsandy.org/blog/"&gt;Sandy 3D Engine&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Thomas PFEIFFER aka Kiroukou&lt;br /&gt;
Sandy is a Flash 3D engine, available in 3 versions: AS2, AS3 and haXe&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/thelaboratory-tween/"&gt;The Laboratory Tween&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; egpdcosta&lt;br /&gt;
Light weight engine (focusing in low Kb increase and not being a do-it-all engine).&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/tink/"&gt;Tink&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Stephen Downs&lt;br /&gt;
Flash/Flex library of Stephen Downs (Tink)&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/tweensy/"&gt;Tweensy&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; flashdynamix&lt;br /&gt;
Tweensy is an extremely efficient Actionscript 3 property tweener. Contained within Tweensy is an expansion package called Tweensy FX which allows for motion effects to be applied onto DisplayObjects.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/htmlwrapper/"&gt;Wrapper&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Tyler Larson&lt;br /&gt;
Wrapper is a cross-browser compliant HTML/CSS rendering engine written in ActionScript that sits on top of your standards compliant HTML page. Wrapper eliminates cross-browser issues and makes integrating ActionScript and HTML/CSS projects possible without needing to compile.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/UeEt8w_nx-Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flash/30-more-awesome-open-source-as3-libraries/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flash/30-more-awesome-open-source-as3-libraries/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flash/30-more-awesome-open-source-as3-libraries/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[Silly Flasher, Intros are for Newbies]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/i-9y_b36hV4/" />
		<id>http://www.blogna.org/blog/?p=519</id>
		<updated>2009-03-30T14:14:11Z</updated>
		<published>2009-03-29T17:30:05Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe AIR" /><category scheme="http://www.blogna.org/blog" term="Adobe Flash" /><category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Inspiration" /><category scheme="http://www.blogna.org/blog" term="Rants" />		<summary type="html"><![CDATA[The evolution of the Flash Platform has been an incredible display of growth and adaptation of a product.  The Flash Platform, as most of us know, is now more than just simply vector animation software, and it has been fun to watch the Flash community shape the web with their endless creativity combined with [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flash/silly-flasher-intros-are-for-newbies/">&lt;p&gt;The evolution of the Flash Platform has been an incredible display of growth and adaptation of a product.  The Flash Platform, as most of us know, is now more than just simply vector animation software, and it has been fun to watch the Flash community shape the web with their endless creativity combined with the improved power of Actionscript and the technology around the Flash Player.&lt;/p&gt;
&lt;p&gt;Flash is no longer just a tool for creating banner ads, and website intros.  Today, it's a Platform that allows designers and developers alike to turn loose their creative instincts.  While there are valid arguments for using other technologies in some cases, today, Flash is still the most versatile technology available for creating &lt;a href="http://download.macromedia.com/pub/flash/whitepapers/richclient.pdf"&gt;Rich Internet Applications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From time to time, I run across articles that STILL talk about how bad Flash is for the web, and folks who STILL fault Adobe and the Flash Player for websites that have bad implementations, and SEO experts who STILL freak out when they see Flash on a website.  It blows me away.  Really.&lt;/p&gt;
&lt;p&gt;Flash, as a technology, has come a long way in the last decade, and while it doesn't make sense in every situation, Flash is just a "given" in other situations.  Below I've listed the cases or categories where Flash just makes sense on the web.  I've also included a few examples of pretty good implementations (I would be willing to bet that these developers were glad they had the Flash player available in their bag of tricks).  If I've forgotten any, feel free to call me out in the comments.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-519"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;Data Visualization&lt;/h2&gt;
&lt;h4&gt;&lt;a href="http://spatialkey.com/"&gt;SpatialKey&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;SpatialKey is a next generation Information Visualization, Analysis and Reporting System. It is designed to help organizations quickly assess location based information critical to their organizational goals, decision making processes and reporting requirements.&lt;br /&gt;
&lt;a href="http://spatialkey.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/spatialkey.jpg" alt="spatialkey" title="spatialkey" width="550" height="1095" class="alignnone size-full wp-image-526" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;Image Manipulation&lt;/h2&gt;
&lt;h4&gt;&lt;a href="http://www.picnik.com/"&gt;Picnik&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Picnik makes your photos fabulous with easy to use yet powerful editing tools. Tweak to your heart’s content, then get creative with oodles of effects, fonts, shapes, and frames.&lt;br /&gt;
It's fast, easy, and fun.&lt;br /&gt;
&lt;a href="http://www.picnik.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/picnik.jpg" alt="picnik" title="picnik" width="550" height="550" class="alignnone size-full wp-image-528" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://pixlr.com/"&gt;Pixlr&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Pixlr is a free online photo editor, jump in and start edit, adjust, filter. It's just what you imagine!&lt;br /&gt;
&lt;a href="http://www.pixlr.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/pixlr1.jpg" alt="pixlr1" title="pixlr1" width="550" height="278" class="alignnone size-full wp-image-568" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.splashup.com/"&gt;Splashup and Splashup Light&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Taking some cues from Splashup, Splashup Light also has powerful tools for advanced image editing enthusiasts like Levels, Hue - Saturation and Brightness - Contrast. Together with standards tools like rotate, crop, resize and many fun effects, Splashup Light is a well-rounded photo editor perfect for those that don't need or want heavy desktop image editing suites.&lt;br /&gt;
&lt;a href="http://www.splashup.com/light/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/splashup-light.jpg" alt="splashup-light" title="splashup-light" width="550" height="476" class="alignnone size-full wp-image-537" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;Realtime Multi-User Applications&lt;/h2&gt;
&lt;h4&gt;&lt;a href="https://acrobat.com/"&gt;Adobe ConnectNow&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;With Adobe ConnectNow at Acrobat.com, you can meet live over the web and share your screen with anyone.&lt;br /&gt;
&lt;a href="https://acrobat.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/acrobatcom.jpg" alt="acrobatcom" title="acrobatcom" width="525" height="291" class="alignnone size-full wp-image-539" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.sliderocket.com/"&gt;SlideRocket&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;SlideRocket is the leader in online presentation software. With SlideRocket you quickly make stunning presentations, manage a library of slides and assets, share them securely with colleagues, and measure how they're used. SlideRocket redefines what presentations can do and what they can do for you.&lt;br /&gt;
&lt;a href="http://www.sliderocket.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/sliderocket.jpg" alt="sliderocket" title="sliderocket" width="550" height="286" class="alignnone size-full wp-image-540" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;Interactive Video&lt;/h2&gt;
&lt;h4&gt;&lt;a href="http://www.viddler.com/"&gt;Viddler&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;With Viddler, your audience can easily interact with your videos by posting timed tags and timed comments inside of them. It's even possible to record a video comment, or to create a special Digg button tag.&lt;br /&gt;
&lt;a href="http://www.viddler.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/viddler.jpg" alt="viddler" title="viddler" width="550" height="560" class="alignnone size-full wp-image-541" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;Fun and Games&lt;/h2&gt;
&lt;h4&gt;&lt;a href="http://www.scrapblog.com/"&gt;Scrapblog&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Create personalized scrapbooks with your photos, video and thousands of creative elements. Share them online with our community, send them by email, or post them to your favorite websites. Print your scrapblogs for a truly personalized keepsake for you or to give to others as a gift.&lt;br /&gt;
&lt;a href="http://www.scrapblog.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/scrapblog.jpg" alt="scrapblog" title="scrapblog" width="550" height="464" class="alignnone size-full wp-image-543" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.clubpenguin.com/"&gt;Club Penguin&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Club Penguin is a snow-covered, virtual world where children play games and interact with friends in the guise of colourful penguin avatars.&lt;br /&gt;
&lt;a href="http://www.clubpenguin.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/clubpenguin.jpg" alt="clubpenguin" title="clubpenguin" width="550" height="418" class="alignnone size-full wp-image-545" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.webkinz.com/us_en/"&gt;Webkinz&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Webkinz pets are lovable plush pets that each come with a unique Secret Code. With it, you enter Webkinz World where you care for your virtual pet, answer trivia, earn KinzCash, and play the best kids games on the net!&lt;br /&gt;
&lt;a href="http://www.webkinz.com/us_en/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/webkinz.jpg" alt="webkinz" title="webkinz" width="550" height="345" class="alignnone size-full wp-image-547" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;3D on the Web&lt;/h2&gt;
&lt;h4&gt;&lt;a href="http://ecodazoo.com/"&gt;Ecodazoo.com&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Ecodazoo.com is a really slick example of 3D in Flash&lt;br /&gt;
&lt;a href="http://ecodazoo.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/the-eco-zoo.jpg" alt="the-eco-zoo" title="the-eco-zoo" width="550" height="576" class="alignnone size-full wp-image-544" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.playsmart.jp/"&gt;Playsmart.jp&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Playsmart.jp is a fun 3D interactive promo site for the Smart car.&lt;br /&gt;
&lt;a href="http://www.playsmart.jp/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/playsmart.jpg" alt="playsmart" title="playsmart" width="550" height="346" class="alignnone size-full wp-image-550" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://microsites.audi.co.uk/microsites/RS6/index.html#/home/"&gt;Audi RS6&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Audi promo site for the Audi RS6.&lt;br /&gt;
&lt;a href="http://microsites.audi.co.uk/microsites/RS6/index.html#/home/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/audi.jpg" alt="audi" title="audi" width="550" height="316" class="alignnone size-full wp-image-551" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/i-9y_b36hV4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flash/silly-flasher-intros-are-for-newbies/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flash/silly-flasher-intros-are-for-newbies/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flash/silly-flasher-intros-are-for-newbies/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[30+ “Must Try” Open Source Actionscript 3 Libraries]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/1k8fWBIdnQM/" />
		<id>http://www.blogna.org/blog/?p=464</id>
		<updated>2009-04-02T12:16:06Z</updated>
		<published>2009-03-18T02:54:05Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe AIR" /><category scheme="http://www.blogna.org/blog" term="Adobe Flash" /><category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Dev Resources" />		<summary type="html"><![CDATA[The real beauty of the Flash Platform is the level of community involvement.  There are open source projects floating around all over the place, and folks are sharing code and ideas like never before.  Take advantage of these gems, and give back when you have an opportunity!
Here are a few well written Actionscript [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flash/30-must-try-open-source-actionscript-3-libraries/">&lt;p&gt;The real beauty of the Flash Platform is the level of community involvement.  There are open source projects floating around all over the place, and folks are sharing code and ideas like never before.  Take advantage of these gems, and give back when you have an opportunity!&lt;/p&gt;
&lt;p&gt;Here are a few well written Actionscript 3 libraries.  If you're looking for inspiration, crack open a few of these &lt;a href="http://www.blogna.org/blog/adobe-flash/30-must-try-open-source-actionscript-3-libraries"&gt;libraries&lt;/a&gt; and dig around!&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;UPDATE:&lt;/h5&gt;
&lt;p&gt;If you like this list, you should also check out &lt;a href="http://www.blogna.org/blog/adobe-flash/30-more-awesome-open-source-as3-libraries/"&gt;30 MORE Awesome Open Source AS3 Libraries&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-464"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://alivepdf.bytearray.org/"&gt;AlivePDF&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Thibault Imbert&lt;br /&gt;
AlivePDF is an open-source ActionScript 3 PDF generation library ported from the FPDF (http://www.fpdf.org/) PHP project. It allows you to generate PDF's client-side.  &lt;a href="http://alivepdf.bytearray.org/?p=78"&gt;Here is a tutorial video showing how to get started with AlivePDF.&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3awss3lib/"&gt;Amazon S3 Library (as3awss3lib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Christian Cantrell&lt;br /&gt;
This is an AS3 library for accessing Amazon's S3 service. It only works in AIR because of restrictions in the browser player.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3corelib/"&gt;AS3 Core Library (as3corelib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Mike Chambers, Daniel Dura, Christian Cantrell&lt;br /&gt;
The corelib project is an ActionScript 3 Library that contains a number of classes and utilities for working with ActionScript 3. These include classes for MD5 and SHA 1 hashing, Image encoders, and JSON serialization as well as general String, Number and Date APIs.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3crypto/"&gt;AS3 Crypto (as3crypto)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Henri Torgemane&lt;br /&gt;
As3 Crypto is a cryptography library written in Actionscript 3 that provides several common algorithms.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/assql/"&gt;AS3 MySQL Driver (assql)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; maclema?&lt;br /&gt;
asSQL is an Actionscript 3 Mysql Driver aimed towards AIR projects to allow Mysql database connectivity directly from Actionscript.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3notificationlib/"&gt;AS3 Notification Library (as3notificationlib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Christian Cantrell&lt;br /&gt;
This project makes it easy to add cross-platform notifications to your AIR application. It handles "native system notifications" like the dock icon bouncing and the taskbar icon flashing, and it allows you to easily create alert "pop-ups".&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3notificationlib/"&gt;AS3 Native Alert Library (as3nativealertlib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Christian Cantrell&lt;br /&gt;
In Flex, we have alerts, but they are Flex windows rather than native OS windows. This is fine in the browser, but doesn't make much sense in AIR (Adobe Integrated Runtime). In AIR, we want our alerts to show up in their own native windows. This project creates Flex-like alerts, but they are native windows.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3ebaylib/"&gt;AS3 Ebay Library (as3ebaylib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Charles Bihis, Mike Potter, Darron Schall, Mike Chambers, Alan Lewis&lt;br /&gt;
The eBay ActionScript 3.0 library provides an interface between the eBay XML API and ActionScript 3.0.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm"&gt;Cairngorm&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Adobe Open Source&lt;br /&gt;
Cairngorm is the lightweight micro-architecture for Rich Internet Applications built in Flex or AIR. A collaboration of recognized design patterns, Cairngorm exemplifies and encourages best-practices for RIA development advocated by Adobe Consulting, encourages best-practice leverage of the underlying Flex framework, while making it easier for medium to large teams of software engineers deliver medium to large scale, mission-critical Rich Internet Applications.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/commandproxy/"&gt;Command Proxy (commandproxy)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Mike Chambers&lt;br /&gt;
A simple development kit for proxying calls between applications and the operating system. Useful for web based desktop application environments which may not have complete access to operating system functionality by default. This project is intended as a proof of concept.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.degrafa.org/"&gt;Degrafa&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Jason Hawryluk and &lt;a href="http://www.degrafa.org/about/#team"&gt;Team&lt;/a&gt;&lt;br /&gt;
Degrafa is a declarative graphics framework for Flex. Degrafa allows you to use MXML markup to draw shapes, make complex graphics, create skins and also includes advanced CSS support.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/facebook-actionscript-api/"&gt;Facebook API&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Daniel Dura&lt;br /&gt;
The Facebook Actionscript API provides an interface between the Facebook REST based API and Flash/Flex based applications.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/flexlib/"&gt;FlexLib&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Darron Schall, Doug McCune, Mike Chambers&lt;br /&gt;
The FlexLib project is a community effort to create open source user interface components for Adobe Flex 2 and 3.  Current components: AdvancedForm, Base64Image, EnhancedButtonSkin, CanvasButton, ConvertibleTreeList, Draggable Slider, Fire, Highlighter, HorizontalAxisDataSelector IconLoader, ImageMap, PromptingTextArea, PromptingTextInput, Scrollable Menu Controls, SuperTabNavigator, Alternative Scrolling Canvases, Horizontal Accordion, TreeGrid, FlowBox, Docking ToolBar, Flex Scheduling Framework&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit"&gt;Flex Unit&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Adobe Open Source&lt;br /&gt;
FlexUnit is a unit testing framework for Flex and ActionScript 3.0 applications and libraries. It mimics the functionality of JUnit, a Java unit testing framework, and comes with a graphical test runner.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://blog.funit.org/"&gt;FUnit Testing Framework&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Ryan Christiansen&lt;br /&gt;
Metadata driven unit testing for Flex. The next generation of unit testing for Flex.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3flickrlib/"&gt;Flickr API (as3flickrlib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Mike Chambers&lt;br /&gt;
The Flickr library is an ActionScript 3.0 API for the online photo sharing application, Flickr. It provides access to the entire Flickr API.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://codeazur.com.br/lab/fzip/"&gt;FZip&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Claus Wahlers and Max Herkender&lt;br /&gt;
FZip is an Actionscript 3 class library to load, modify and create standard ZIP archives.  FZip parses ZIP archives progressively, allowing access to contained files while the archive is loading.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/jest-for-flex/"&gt;Jest&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Tony Hillerson&lt;br /&gt;
Jest is an extension to Adobe Cairngorm that provides developers with the tools to integrate mouse gestures into their applications that get mapped onto Cairngorm Commands.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://mate.asfusion.com/"&gt;Mate&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; nahuel? and paikea?&lt;br /&gt;
Mate is a tag-based, event-driven Flex framework. Flex applications are event-driven. Mate framework has been created to make it easy to handle the events your Flex application creates. Mate allows you to define who is handling those events, whether data needs to be retrieved from the server, or other events need to be triggered.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/papervision3d/"&gt;Papervision 3D&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Team at &lt;a href="http://blog.papervision3d.org/"&gt;papervision3d.org&lt;/a&gt;&lt;br /&gt;
Open source realtime 3D engine for Flash.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://puremvc.org/"&gt;PureMVC&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Cliff Hall&lt;br /&gt;
PureMVC is a lightweight framework for creating applications based upon the classic Model, View and Controller concept.  Two versions of the framework are supported with reference implementations; Standard and MultiCore.  &lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://developer.ribbit.com/"&gt;Ribbit&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Ribbit Corporation&lt;br /&gt;
Using the Ribbit Voice Platform, voice is now a programmable feature that is free from the traditional device. Build your rich voice applications in either Flex or Flash.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://wiki.developerforce.com/index.php/Flex_Toolkit"&gt;Salesforce Flex Toolkit&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Force.com&lt;br /&gt;
The Force.com Toolkit for Adobe AIR and Flex brings the power of Platform-as-a-Service to Adobe RIA technologies. With the toolkit, Flex developers now have direct access to the Force.com Web services API, allowing the easy creation of new user experiences and web applications that connect directly to Force.com’s database, logic and workflow capabilities.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3soundeditorlib/"&gt;Sound Editor Library&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Chris Scott&lt;br /&gt;
Application displays a spectrum of the mp3 file, displays cue points from a file, and allows navigation and playback of mp3 and navigation between cue points.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/swizframework/"&gt;SWIZ&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; Yes&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Chris Scott&lt;br /&gt;
Swiz is a framework for Adobe Flex that aims to bring complete simplicity to RIA development. Swiz provides Inversion of Control, event handing, and simple life cycle for asynchronous remote methods. In contrast to other major frameworks for Flex, Swiz imposes no JEE patterns on your code, no repetitive folder layouts, and no boilerplate code on your development. Swiz represents best practices learned from the top RIA developers at some of the best consulting firms in the industry, enabling Swiz to be simple, lightweight, and extremely productive.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3syndicationlib/"&gt;Syndication Library (as3syndicationlib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Mike Chambers, Christian Cantrell&lt;br /&gt;
Use the syndication library to parse Atom and all versions of RSS easily. This library hides the differences between the formats so you can parse any type of feed without having to know what kind of feed it is.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/tweener/"&gt;Tweener&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Zeh Fernando, Nate Chatellier, Arthur Debert, Francis Turmel&lt;br /&gt;
In layman's terms, Tweener helps you move things around on the screen using only code, instead of the timeline.  The general idea of a tweening Class is that dynamic animation and transitions (created by code) are easier to maintain and control, and more stable than animation based on the regular Flash timeline, since you can control it by time rather than by frames.  Aimed both for designers and advanced developers, the Tweener syntax is created with simplicity of use in mind, while still allowing access to more advanced features.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://blog.greensock.com/tweenliteas3/"&gt;TweenLite&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Jack Doyle&lt;br /&gt;
TweenLite is an extremely lightweight, FAST, and flexible tweening engine that serves as the core of the GreenSock tweening platform. There are plenty of other tweening engines out there to choose from, so here's why you might want to consider TweenLite: Speed, Feature Set, TweenMax, Expandability, Management Features, Ease of use, Updates, AS2 and AS3.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://code.google.com/p/as3youtubelib/"&gt;YouTube API (as3youtubelib)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owners:&lt;/strong&gt; Mike Chambers, Charles Bihis, Mike Potter, Darron Schall, Daniel Dura&lt;br /&gt;
The YouTube API provides an ActionScript 3.0 interface to search videos from YouTube.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://seraf.mediabox.fr/wow-engine/as3-3d-physics-engine-wow-engine/"&gt;WOW 3D Physics Engine&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Seraf&lt;br /&gt;
WOW-Engine is a free AS3 open source physics engine written by Seraf ( Jérôme Birembaut ) capable of handling positions in a 3D environment.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://developer.yahoo.com/flash/"&gt;Yahoo! Astra&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Requires Flex Framework:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Requires AIR Runtime:&lt;/strong&gt; No&lt;br /&gt;
&lt;strong&gt;Project Owner:&lt;/strong&gt; Yahoo!&lt;br /&gt;
ASTRA, the ActionScript Toolkit for Rich Applications, is a collection of Flash and Flex components, code libraries, toolkits and utilities developed by Yahoo! for ActionScript developers.  Included in the toolkit: Yahoo! Answers API, Weather API, Search API, Upcoming.org API, Maps Component, Animation Utilities, Layout Utilities, UI Components, and more!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/1k8fWBIdnQM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flash/30-must-try-open-source-actionscript-3-libraries/#comments" thr:count="13" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flash/30-must-try-open-source-actionscript-3-libraries/feed/atom/" thr:count="13" />
		<thr:total>13</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flash/30-must-try-open-source-actionscript-3-libraries/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[13 Excellent FREE Flex Skins]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/jNeckX8pvCk/" />
		<id>http://www.blogna.org/blog/?p=387</id>
		<updated>2009-03-08T06:05:37Z</updated>
		<published>2009-03-07T13:09:27Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Design Resources" /><category scheme="http://www.blogna.org/blog" term="Dev Resources" />		<summary type="html"><![CDATA[
I just wanted to share a few of the best free Flex skins that I have found.  If you want to give your app some style, and you don't have the time to design a Flex skin yourself, you'll likely find something here that can spice up your app. 
If you're interested in learning [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flex/13-excellent-free-flex-skins/">&lt;p&gt;&lt;a href="http://www.blogna.org/blog/adobe-flex/free-flex-skins/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/skins.jpg" alt="skins" title="skins" width="550" height="260" class="alignnone size-full wp-image-453" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just wanted to share a few of the best free Flex skins that I have found.  If you want to give your app some style, and you don't have the time to design a Flex skin yourself, you'll likely find something here that can spice up your app. &lt;/p&gt;
&lt;p&gt;If you're interested in learning more about how to create new Flex skins or learn how to apply skins you have created, check out &lt;a href="http://www.blogna.org/blog/adobe-flex/for-designers-how-to-create-a-flex-skin/"&gt;How to Create a Flex Skin&lt;/a&gt; and &lt;a href="http://www.blogna.org/blog/adobe-flex/for-developers-how-to-apply-a-flex-skin/"&gt;How to Apply a Flex Skin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blogna.org/blog/adobe-flex/8-slick-free-flex-skins/"&gt;Enjoy!&lt;/a&gt;&lt;br /&gt;
&lt;span id="more-387"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href="http://www.scalenine.com/gallery/"&gt;ScaleNine&lt;/a&gt;&lt;/h2&gt;
&lt;h5&gt;Undefined Skin One&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.scalenine.com/themes/undefined/Undefined.html#"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/undefined-skin-one.png" alt="Undefined Skin One" title="Undefined Skin One" width="550" height="250" class="alignnone size-full wp-image-391" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/undefined/Undefined.html#"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/undefined/srcview/Undefined.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Brownie&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.scalenine.com/themes/brownie/Brownie.html"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/brownie.png" alt="Brownie" title="Brownie" width="550" height="250" class="alignnone size-full wp-image-395" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/brownie/Brownie.html"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/brownie/srcview/Brownie.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Kingnare&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.scalenine.com/themes/kingnare/Kingnare.html#"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/kingnare.png" alt="Kingnare" title="Kingnare" width="550" height="250" class="alignnone size-full wp-image-398" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/kingnare/Kingnare.html#"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/kingnare/srcview/Kingnare.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Vista Remix&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.scalenine.com/themes/vistaremix/VistaRemix.html#"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/vista-remix.png" alt="Vista Remix" title="Vista Remix" width="550" height="250" class="alignnone size-full wp-image-400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/vistaremix/VistaRemix.html#"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/vistaremix/srcview/VistaRemix.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Aqua (Apple OSX Skin)&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.scalenine.com/themes/aqua/Aqua.html#"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/aqua.png" alt="Aqua" title="Aqua" width="550" height="250" class="alignnone size-full wp-image-402" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/aqua/Aqua.html#"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/aqua/srcview/Aqua.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Darkroom&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.scalenine.com/themes/darkroom/darkroom.html"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/darkroom.png" alt="Darkroom" title="Darkroom" width="550" height="250" class="alignnone size-full wp-image-405" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/darkroom/darkroom.html"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/darkroom/srcview/darkroom.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://fleksray.org/Flex_skin.html"&gt;fle[ks]ray&lt;/a&gt;&lt;/h2&gt;
&lt;h5&gt;Black Edding&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://fleksray.org/skins/edding/Edding.html"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/black-edding.png" alt="Black Edding" title="Black Edding" width="550" height="250" class="alignnone size-full wp-image-412" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://fleksray.org/skins/edding/Edding.html"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;loc=en_us&amp;extid=1250528"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Flexscribble&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://fleksray.org/skins/scribble/Scribble.html"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/flexscribble.png" alt="Flexscribble" title="Flexscribble" width="550" height="250" class="alignnone size-full wp-image-414" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://fleksray.org/skins/scribble/Scribble.html"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;loc=en_us&amp;extid=1222527"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://developer.yahoo.com/flash/articles/yahoo-flex-skin.html"&gt;Yahoo!&lt;/a&gt;&lt;/h2&gt;
&lt;h5&gt;Yahoo Flex Skin&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://developer.yahoo.com/flash/articles/yahoo-flex-skin.html"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/yahoo-flex-skin.png" alt="Yahoo Flex Skin" title="Yahoo Flex Skin" width="550" height="250" class="alignnone size-full wp-image-432" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.yahoo.com/flash/articles/yahoo-flex-skin.html"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.yahoo.com/flash/articles/assets/flex-skinning/yflexskin.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.philterdesign.com/"&gt;PhilterDesign.com&lt;/a&gt;&lt;/h2&gt;
&lt;h5&gt;iCandy&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.philterdesign.com/blog/2008/10/icandy_free_flex_skin_1.html"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/icandy.png" alt="icandy" title="icandy" width="550" height="250" class="alignnone size-full wp-image-434" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/blog/source/challenge/Entry9/Entry9.html"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.scalenine.com/themes/icandy/srcview/iCandy.zip"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.websector.de/blog/"&gt;WebSector&lt;/a&gt;&lt;/h2&gt;
&lt;h5&gt;WSBackgroundPixelSkin&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.websector.de/blog/2007/07/06/pimp-your-flex-app-using-wsbackgroundpixelskin/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/wsbackgroundpixelskin.png" alt="wsbackgroundpixelskin" title="wsbackgroundpixelskin" width="550" height="250" class="alignnone size-full wp-image-438" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.websector.de/blog/2007/07/06/pimp-your-flex-app-using-wsbackgroundpixelskin/"&gt;Preview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.websector.de/blog/wp-content/uploads/2007/07/06/srcview/index.html"&gt;Download Source&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;a href="http://www.fillcolors.com/"&gt;FillColors.com&lt;/a&gt;&lt;/h2&gt;
&lt;h5&gt;Carbon&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.fillcolors.com/app/?#/carbon/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/carbon.png" alt="carbon" title="carbon" width="550" height="250" class="alignnone size-full wp-image-440" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.fillcolors.com/app/?#/carbon/"&gt;Preview and Download&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h5&gt;Rainbow&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.fillcolors.com/app/?#/rainbow/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/rainbow.png" alt="rainbow" title="rainbow" width="550" height="250" class="alignnone size-full wp-image-441" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.fillcolors.com/app/?#/rainbow/"&gt;Preview and Download&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/jNeckX8pvCk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flex/13-excellent-free-flex-skins/#comments" thr:count="16" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flex/13-excellent-free-flex-skins/feed/atom/" thr:count="16" />
		<thr:total>16</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flex/13-excellent-free-flex-skins/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[The Flash Lite Developer Challenge]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/pVa4PQtWYUo/" />
		<id>http://www.blogna.org/blog/?p=375</id>
		<updated>2009-03-06T03:28:41Z</updated>
		<published>2009-03-06T03:28:39Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe Flash Lite" /><category scheme="http://www.blogna.org/blog" term="Contests" />		<summary type="html"><![CDATA[
Adobe is sponsoring another developer competition.  This is another opportunity to win some serious cash.  The competition is challenging three groups of developers:

Those currently working with Flash Lite
Flash developers interested in developing applications for mobile devices
Mobile application developers interested in using Flash Lite

When the contest was first posted, there were some limitations in [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/contests/the-flash-lite-developer-challenge/">&lt;p&gt;&lt;a href="http://www.flashlitedeveloperchallenge.com/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2009/03/flash-lite-developer-challenge.jpg" alt="Flash Lite Developer Challenge" title="Flash Lite Developer Challenge" width="550" height="500" class="size-full wp-image-376" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Adobe is sponsoring &lt;a href="http://www.flashlitedeveloperchallenge.com/"&gt;another developer competition&lt;/a&gt;.  This is another opportunity to &lt;a href="http://www.flashlitedeveloperchallenge.com/the-prizes.php"&gt;win some serious cash&lt;/a&gt;.  The competition is challenging three groups of developers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Those currently working with Flash Lite&lt;/li&gt;
&lt;li&gt;Flash developers interested in developing applications for mobile devices&lt;/li&gt;
&lt;li&gt;Mobile application developers interested in using Flash Lite&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When the contest was first posted, there were some limitations in the terms and conditions stating that individuals could not enter the contest.  I'm stoked that &lt;a href="http://technoracle.blogspot.com/2009/02/100000-for-flash-lite-and-mobile.html#comments"&gt;this restriction has been lifted&lt;/a&gt;, so even if you're solo, you can enter and win.&lt;/p&gt;
&lt;p&gt;The deadline for entries is May 31st.  If you're a Flash developer and you've been interested in getting into mobile development, now is a great time to give it a shot!  Good luck!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/pVa4PQtWYUo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/contests/the-flash-lite-developer-challenge/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/contests/the-flash-lite-developer-challenge/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/contests/the-flash-lite-developer-challenge/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[CodeIgniter safe_mailto with JQuery Curvy Corners Script Breaks in Firefox]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/-wWmwE5xD4w/" />
		<id>http://www.blogna.org/blog/?p=355</id>
		<updated>2009-01-26T02:45:41Z</updated>
		<published>2009-01-26T02:43:10Z</published>
		<category scheme="http://www.blogna.org/blog" term="CodeIgniter" /><category scheme="http://www.blogna.org/blog" term="Dev Resources" /><category scheme="http://www.blogna.org/blog" term="Javascript" /><category scheme="http://www.blogna.org/blog" term="Rants" />		<summary type="html"><![CDATA[I noticed an issue a couple of days ago that prevented Firefox (Mac and Windows) from rendering a page of a site that I'm working on.  I’m using CodeIgniter version 1.7.0.  Initially, it appeared that any time I used the safe_mailto command from the CodeIgniter URL Helper class, Firefox wouldn't render the page. [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/dev-resources/codeigniter-safe_mailto-with-jquery-curvy-corners-script-breaks-in-firefox/">&lt;p&gt;I noticed an issue a couple of days ago that prevented Firefox (Mac and Windows) from rendering a page of a site that I'm working on.  I’m using &lt;a href="http://codeigniter.com/"&gt;CodeIgniter version 1.7.0&lt;/a&gt;.  Initially, it appeared that any time I used the safe_mailto command from the &lt;a href="http://codeigniter.com/user_guide/helpers/url_helper.html"&gt;CodeIgniter URL Helper class&lt;/a&gt;, Firefox wouldn't render the page.  &lt;/p&gt;
&lt;p&gt;Ok, after scratching my head for a while, I discovered that apparently there is some sort of conflict between the obfuscated mailto link and another script that is running on the page.  I also have a &lt;a href="http://blue-anvil.com/archives/anti-aliased-rounded-corners-with-jquery"&gt;script that executes client side when the page loads that will round the corners of a given div&lt;/a&gt;.  When the mailto link is inside a div that is being “rounded”, it causes Firefox to hang.  Bummer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Moral of the story:&lt;/strong&gt;&lt;/em&gt; if you need a safe_mailto link, design your page so that everything has right angle corners. &lt;img src='http://www.blogna.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/-wWmwE5xD4w" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/dev-resources/codeigniter-safe_mailto-with-jquery-curvy-corners-script-breaks-in-firefox/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/dev-resources/codeigniter-safe_mailto-with-jquery-curvy-corners-script-breaks-in-firefox/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/dev-resources/codeigniter-safe_mailto-with-jquery-curvy-corners-script-breaks-in-firefox/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[Actionscript 3 Find and Replace String Performance Comparison]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/nFiepaAWxHY/" />
		<id>http://www.blogna.org/blog/?p=333</id>
		<updated>2009-01-22T16:06:01Z</updated>
		<published>2009-01-22T15:51:45Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe Flash" /><category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Dev Resources" /><category scheme="http://www.blogna.org/blog" term="Rants" />		<summary type="html"><![CDATA[A library I use quite frequently in AS3 is as3corelib.  This library was written by a few guys from Adobe and it provides an assortment of very useful AS3 classes.  I recommend checking it out if you aren't already using it.  If you've been under a rock, it has classes for encoding [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flash/actionscript-3-find-and-replace-string-performance-comparison/">&lt;p&gt;A library I use quite frequently in AS3 is &lt;a href="http://www.mikechambers.com/blog/2008/11/07/as3corelib-92-posted/"&gt;as3corelib&lt;/a&gt;.  This library was written by a few guys from Adobe and it provides an assortment of very useful AS3 classes.  I recommend checking it out if you aren't already using it.  If you've been under a rock, it has classes for encoding JPGs and PNGs.  It has Array, Date, Dictionary, Int, Number, String, and XML utility classes.  It has libraries for encoding and decoding JSON strings.  Anyway, you get the point.  I use the library often.&lt;/p&gt;
&lt;p&gt;I did notice something the other day that I've been meaning to test.  I finally got around to it this morning...&lt;br /&gt;
&lt;span id="more-333"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In the StringUtil class there is a replace() method that allows you to perform a find and replace on a string.  The method signature looks like this: &lt;/p&gt;
&lt;pre class="actionscript"&gt;&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;public&lt;/span&gt; &lt;span style="color: #0066CC;"&gt;static&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; replace&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;input:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;, replace:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;,
  replaceWith:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;It looks simple enough.  In fact, it may be a little easier to read than the way I've traditionally done find and replace.  If I have this string, "The cow jumped over the moon," and I wanted to replace "moon" with "fence".  In the past, I would have just written something like this:&lt;/p&gt;
&lt;pre class="actionscript"&gt;&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; str:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon.&amp;quot;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; newStr:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = str.&lt;span style="color: #0066CC;"&gt;split&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;moon&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #0066CC;"&gt;join&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;fence&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Using this utility class, this would change to:&lt;/p&gt;
&lt;pre class="actionscript"&gt;&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;import&lt;/span&gt; com.&lt;span style="color: #006600;"&gt;adobe&lt;/span&gt;.&lt;span style="color: #006600;"&gt;utils&lt;/span&gt;.&lt;span style="color: #006600;"&gt;StringUtil&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; str:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon.&amp;quot;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; newStr:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = StringUtil.&lt;span style="color: #006600;"&gt;replace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;str, &lt;span style="color: #ff0000;"&gt;&amp;quot;moon&amp;quot;&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;&amp;quot;fence&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;While I was looking through the source code in the library, I noticed that the code for executing the replace is MUCH more involved than I expected.  It looks like this:&lt;/p&gt;
&lt;pre class="actionscript"&gt;&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;public&lt;/span&gt; &lt;span style="color: #0066CC;"&gt;static&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; replace&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;input:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;, replace:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;,
    replaceWith:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;//change to StringBuilder&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; sb:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: #0066CC;"&gt;String&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; found:&lt;span style="color: #0066CC;"&gt;Boolean&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;
&amp;nbsp;
    &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; sLen:&lt;span style="color: #0066CC;"&gt;Number&lt;/span&gt; = input.&lt;span style="color: #0066CC;"&gt;length&lt;/span&gt;;
    &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; rLen:&lt;span style="color: #0066CC;"&gt;Number&lt;/span&gt; = replace.&lt;span style="color: #0066CC;"&gt;length&lt;/span&gt;;
&amp;nbsp;
    &lt;span style="color: #b1b100;"&gt;for&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i:&lt;span style="color: #0066CC;"&gt;Number&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; i &amp;lt; sLen; i++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;input.&lt;span style="color: #0066CC;"&gt;charAt&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; == replace.&lt;span style="color: #0066CC;"&gt;charAt&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
        &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            found = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;
            &lt;span style="color: #b1b100;"&gt;for&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; j:&lt;span style="color: #0066CC;"&gt;Number&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; j &amp;lt; rLen; j++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
            &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;!&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;input.&lt;span style="color: #0066CC;"&gt;charAt&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i + j&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; == replace.&lt;span style="color: #0066CC;"&gt;charAt&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;j&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
                &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                    found = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;
                    &lt;span style="color: #b1b100;"&gt;break&lt;/span&gt;;
                &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;found&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
            &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                sb += replaceWith;
                i = i + &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rLen - &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #b1b100;"&gt;continue&lt;/span&gt;;
            &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
        sb += input.&lt;span style="color: #0066CC;"&gt;charAt&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;//TODO : if the string is not found, should we return the original&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;//string?&lt;/span&gt;
    &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; sb;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Wow. Ok, so I thought there might be a performance advantage to going through all that mess to do a find and replace.  So, I ran a couple of tests to see what happened.&lt;/p&gt;
&lt;p&gt;First, I tested the old fashioned way:&lt;/p&gt;
&lt;pre class="actionscript"&gt;&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;import&lt;/span&gt; flash.&lt;span style="color: #006600;"&gt;utils&lt;/span&gt;.&lt;span style="color: #006600;"&gt;*&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; str:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;
    + &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;
    + &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;
    + &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;timer before loop: &amp;quot;&lt;/span&gt; + &lt;span style="color: #0066CC;"&gt;getTimer&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i:&lt;span style="color: #0066CC;"&gt;int&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; len:&lt;span style="color: #0066CC;"&gt;int&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;50000&lt;/span&gt;;
&lt;span style="color: #b1b100;"&gt;for&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i=&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; i&amp;lt;len; i++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    str.&lt;span style="color: #0066CC;"&gt;split&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;moon&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #0066CC;"&gt;join&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;fence&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;timer after loop: &amp;quot;&lt;/span&gt; + &lt;span style="color: #0066CC;"&gt;getTimer&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;The output to the trace window was:&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;timer before loop: 3&lt;br /&gt;
timer after loop: 324&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Then, I tested using the StringUtil class:&lt;/p&gt;
&lt;pre class="actionscript"&gt;&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;import&lt;/span&gt; com.&lt;span style="color: #006600;"&gt;adobe&lt;/span&gt;.&lt;span style="color: #006600;"&gt;utils&lt;/span&gt;.&lt;span style="color: #006600;"&gt;StringUtil&lt;/span&gt;;
&lt;span style="color: #0066CC;"&gt;import&lt;/span&gt; flash.&lt;span style="color: #006600;"&gt;utils&lt;/span&gt;.&lt;span style="color: #006600;"&gt;*&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; str:&lt;span style="color: #0066CC;"&gt;String&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;
    + &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;
    + &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;
    + &lt;span style="color: #ff0000;"&gt;&amp;quot;The cow jumped over the moon. &amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;timer before loop: &amp;quot;&lt;/span&gt; + &lt;span style="color: #0066CC;"&gt;getTimer&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i:&lt;span style="color: #0066CC;"&gt;int&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; len:&lt;span style="color: #0066CC;"&gt;int&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;50000&lt;/span&gt;;
&lt;span style="color: #b1b100;"&gt;for&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i=&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; i&amp;lt;len; i++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// str.split(&amp;quot;moon&amp;quot;).join(&amp;quot;fence&amp;quot;);&lt;/span&gt;
    StringUtil.&lt;span style="color: #006600;"&gt;replace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;str, &lt;span style="color: #ff0000;"&gt;&amp;quot;moon&amp;quot;&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;&amp;quot;fence&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;timer after loop: &amp;quot;&lt;/span&gt; + &lt;span style="color: #0066CC;"&gt;getTimer&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;The output to the trace window was:&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;timer before loop: 4&lt;br /&gt;
timer after loop: 3145&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ouch!  Now bear in mind, that I'm looping over this string 50,000 times so that we can magnify the comparison, but we definitely don't have a performance advantage by using the StringUtil class.  In fact, it's almost 10 times faster using split/join!&lt;/p&gt;
&lt;p&gt;I love the as3corelib library, but in this case, I think I'll stick to my old habits. &lt;img src='http://www.blogna.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/nFiepaAWxHY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flash/actionscript-3-find-and-replace-string-performance-comparison/#comments" thr:count="7" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flash/actionscript-3-find-and-replace-string-performance-comparison/feed/atom/" thr:count="7" />
		<thr:total>7</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flash/actionscript-3-find-and-replace-string-performance-comparison/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[Flash Player 10 Requires Special Type of Policy File for Socket Connection]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/hnREHrkdT9U/" />
		<id>http://www.blogna.org/blog/?p=320</id>
		<updated>2009-01-10T02:26:00Z</updated>
		<published>2009-01-09T04:46:35Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe Flash" /><category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Rants" />		<summary type="html"><![CDATA[During the development of Flash Player 9 and 10, Adobe has made significant changes to their cross domain security.  I've been doing some research on the changes Adobe has made over the last couple of days.  This article describes the first major issue I've encountered with the new policy file requirements.
Policy files are [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flash/flash-player-10-requires-special-type-of-policy-file-for-socket-connection/">&lt;p&gt;During the development of Flash Player 9 and 10, Adobe has made significant changes to their cross domain security.  I've been doing some research on the changes Adobe has made over the last couple of days.  This article describes the first major issue I've encountered with the new policy file requirements.&lt;/p&gt;
&lt;p&gt;Policy files are used to allow SWFs on one domain (www.siteA.com), to access resources on another domain (www.siteB.com).  They are the primary element of the permissions mechanism that the Flash Player uses to determine if a SWF file should have access to resources on a domain outside of the domain where the SWF is hosted.  A policy file is a simple XML file that is typically placed at the root of a site (www.siteB.com/crossdomain.xml).  &lt;/p&gt;
&lt;p&gt;&lt;span id="more-320"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;When Adobe made these changes to the Flash Player, modifications to this XML file were required in order for everything to work properly.  This article describes the changes that they have made in more detail: &lt;a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer9-10_security.html"&gt;Working with policy file changes in Flash Player 9 and Flash Player 10 beta&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;For the most part, the changes that needed to be made were minor, but there are some changes that require a significant amount of restructuring.  Specifically, socket connections now require a different approach.  &lt;/p&gt;
&lt;p&gt;Prior to Flash Player 9, the cross domain policy file could be sent over standard HTTP and it would allow access to a socket server on that domain.  Adobe has now changed it so that the policy file MUST be sent by the same type of connection that it is requesting access for.  It is somewhat confusing, but basically, a policy file for a socket connection must be sent BY a socket connection (and a policy file that grants access to an HTTP connection, must be sent BY an HTTP connection).&lt;/p&gt;
&lt;p&gt;It took me a while to sift through all the various info on the web to come to this conclusion, so let me rephrase this and say it again.  The player now REQUIRES socket connections to be authorized through a socket policy file.  Policy files served over HTTP may no longer be used to authorize socket connections to that server.&lt;/p&gt;
&lt;p&gt;Adobe has some recommendations on how to set this up.  They suggest that network admins open up port 843 and set it up for the sole purpose of serving socket policy files.  &lt;em&gt;Tangent rant: Wow.  That's going to annoy a few admins...who probably already hate Flash.  Although, I generally agree with Adobe's approach, I think they'll have a hard time making that happen on a large scale.  Most of the larger companies that I've worked with are hesitant to randomly open ports because a Flash developer said it needs to happen.&lt;/em&gt; They also provide examples of &lt;a href="http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html"&gt;how to set up a socket policy file server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyway, I'll likely be setting this up over the next few days, so I'll post updates if I learn anything new and useful.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/hnREHrkdT9U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flash/flash-player-10-requires-special-type-of-policy-file-for-socket-connection/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flash/flash-player-10-requires-special-type-of-policy-file-for-socket-connection/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flash/flash-player-10-requires-special-type-of-policy-file-for-socket-connection/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[Flex and Flash RIA&#8217;s, Authentication, Sessions, Scalability]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/Batd-c5gSN0/" />
		<id>http://www.blogna.org/blog/?p=306</id>
		<updated>2008-12-18T22:14:25Z</updated>
		<published>2008-12-18T21:15:51Z</published>
		<category scheme="http://www.blogna.org/blog" term="Adobe AIR" /><category scheme="http://www.blogna.org/blog" term="Adobe Flash" /><category scheme="http://www.blogna.org/blog" term="Adobe Flex" /><category scheme="http://www.blogna.org/blog" term="Dev Resources" /><category scheme="http://www.blogna.org/blog" term="Tutorials" />		<summary type="html"><![CDATA[When the concept of Rich Internet Applications was formally introduced, it required developers to start thinking about the web a little differently.  RIA's are capable of providing a much smoother user experience, but there are other design changes that we must consider as well....beyond the user interface.  
One of the most obvious differences [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/adobe-flash/flex-and-flash-rias-authentication-sessions-scalability/">&lt;p&gt;When the concept of &lt;a href="http://download.macromedia.com/pub/flash/whitepapers/richclient.pdf"&gt;Rich Internet Applications was formally introduced&lt;/a&gt;, it required developers to start thinking about the web a little differently.  RIA's are capable of providing a much smoother user experience, but there are other design changes that we must consider as well....beyond the user interface.  &lt;/p&gt;
&lt;p&gt;One of the most obvious differences between traditional, page-based web applications and RIA's is that page-based apps generally require page refreshes, while Flex applications don't.  This presents new challenges for web developers who have just started building Flex applications.  Developers are now forced to change the way they think about the view state.  &lt;/p&gt;
&lt;p&gt;&lt;span id="more-306"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Traditional Use of Session Variables&lt;/h2&gt;
&lt;p&gt;In page-based apps, the view state is mostly handled on the server.  This makes sense, since most user interaction requires a new request to the web server.  The server processes that user interaction, determines what the new view should look like, then sends that view (HTML) back to the browser.  In this scenario, it the easiest place to maintain information about a user is in a session on the server.&lt;/p&gt;
&lt;p&gt;A typical example is in user authentication.  It might go something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A user submits their username and password via an HTML form.&lt;/li&gt;
&lt;li&gt;Server receives the credentials and verifies them against the users in a database.&lt;/li&gt;
&lt;li&gt;If the user is valid, a session is created to store some information about this user.&lt;/li&gt;
&lt;li&gt;When requests are made from the browser, the user session info is used to help determine what HTML will be returned to the browser.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Problems with Traditional Sessions in Flex Apps&lt;/h2&gt;
&lt;p&gt;There are various scenarios that might cause a user's session to die.  Sessions are usually set to expire if the app doesn't make any requests to the server for a given length of time, or the session may die if the web server requires a restart.  This is fine for page-based apps.  If the session expires and the browser requests a new HTML view, the server can just return a login screen notifying the user that they should log in again.   Since RIAs don't require page refreshes, and we're now maintaining view state on the client, the session on the server may expire, even if the user is interacting with the application on the client.  The Flex app *could* periodically make dummy requests to the server in order to keep the session alive, but this is a clunky solution and requires unnecessary traffic and load on the web server.  While we *could* still kick the user back to a login screen when their session expires, we don't want this to happen if a user is actively using the application.&lt;/p&gt;
&lt;p&gt;Another, more general, problem with sessions is that they tie your application to one web server.  For example, if you are load balancing your site between multiple web servers, and you try to maintain information about a user after login using a session, then that session will only exist on the server that received the login request.  The other servers won't know anything about that user's session.  There are ways around this, but generally, if your app relies on sessions, then it's going to be more difficult to scale to support more users, so we'll look at a different solution.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;Sessions are a quick and easy way to maintain information about a user in memory on the server, but now we're building applications that no longer require frequent page refreshes, and now we don't need to maintain the view state on the server, so it makes sense to make some adjustments. &lt;/p&gt;
&lt;p&gt;Here is a breakdown of one possible solution:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A user submits their username and password inside a Flex form.&lt;/li&gt;
&lt;li&gt;Server receives the credentials and verifies them against the users in a database.&lt;/li&gt;
&lt;li&gt;If the user is valid, a key is created, stored in the database with a time stamp, then sent back to the user.&lt;/li&gt;
&lt;li&gt;The key is stored in a local variable inside the Flex application.&lt;/li&gt;
&lt;li&gt;Now, any time the application needs to retrieve data from a service that requires the user to be logged in, it will pass the key with the request.  So, instead of a method like getUserInfo(), now it will look like getUserInfo(key).&lt;/li&gt;
&lt;li&gt;The service will use the key to determine if the user is authenticated, and if they are, it will send back the appropriate data.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Obviously, if security is a priority, then SSL is a must, but that's always the case.  You'll also want to make sure each key is unique in the database, and that the key is an encrypted string that someone could not easily guess (or generate). &lt;/p&gt;
&lt;p&gt;This approach accomplishes a couple of things.  First, load balancing becomes easier.  It removes the need for a temporary session to be created on the server, so any web server can accept a request from the client, and can verify it against the database.  Second, we don't have to worry about the risk of our session expiring unnecessarily.  &lt;/p&gt;
&lt;p&gt;If you'd like to see code or more detail about what the solution might look like, let me know, and I'll assemble an example in a future post.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/Batd-c5gSN0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/adobe-flash/flex-and-flash-rias-authentication-sessions-scalability/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/adobe-flash/flex-and-flash-rias-authentication-sessions-scalability/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/adobe-flash/flex-and-flash-rias-authentication-sessions-scalability/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Tim McLeod</name>
						<uri>http://www.timmcleod.com/</uri>
					</author>
		<title type="html"><![CDATA[Deadlines: 9 Tips To Improve Your Dev Team&#8217;s Chances]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogna/~3/i79AcLX_gnA/" />
		<id>http://www.blogna.org/blog/?p=268</id>
		<updated>2008-12-12T18:37:02Z</updated>
		<published>2008-12-12T15:44:29Z</published>
		<category scheme="http://www.blogna.org/blog" term="Dev Resources" /><category scheme="http://www.blogna.org/blog" term="Inspiration" /><category scheme="http://www.blogna.org/blog" term="Rants" /><category scheme="http://www.blogna.org/blog" term="Workflow" />		<summary type="html"><![CDATA[Do you sometimes scratch your head and ask WTF (I said "frick" in my head.  Really.) when projects suddenly fall apart?  Suppose you're a project manager.  Your team is steadily moving along on a project.  There is no indication that anything is wrong, and your team says they're on target to [...]]]></summary>
		<content type="html" xml:base="http://www.blogna.org/blog/workflow/deadlines-9-tips-to-improve-your-dev-teams-chances/">&lt;p&gt;Do you sometimes scratch your head and ask WTF (I said "frick" in my head.  Really.) when projects suddenly fall apart?  Suppose you're a project manager.  Your team is steadily moving along on a project.  There is no indication that anything is wrong, and your team says they're on target to hit their deadlines.  Then, all of the sudden, things seem to be out of control with the application, and there seems to be no explanation as to why everything is screwy.  Everyone begins to panic towards the end.  Features that should have been completed a long time ago still aren't working, developers are sweating profusely, and throwing up in the corner periodically.  If your development team seems to have a hard time estimating tasks or consistently misses deadlines, then this article is for you.&lt;/p&gt;
&lt;p&gt;Organization, consistency, and having realistic expectations are key to predicting more accurate timelines and avoiding unexpected last minute failures.&lt;/p&gt;
&lt;p&gt;Read on. &lt;span id="more-268"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;1. Schedule time for maintenance tasks!&lt;/h2&gt;
&lt;p&gt;If you are managing a team of developers and you have never been a developer yourself, then you should take note of this one.  First, here's what I mean by "maintenance task".  A maintenance task is anything that doesn't fall under billable production time.  This could include any of the items on this list.  These things need to happen, and if you don't schedule time for them, then you and your dev team will pay the price by missing deadlines, working OT, and getting divorced.  If you're trying to squeeze 95% billable time out of your production team, then you need to adjust your expectations.&lt;/p&gt;
&lt;h2&gt;2. Cross train!&lt;/h2&gt;
&lt;p&gt;This is especially important when you have a relatively small team of developers.  The developers on your team need to be able to jump from project to project, client side to server side without a hiccup.  If you have a developer on your team who isn't flexible and willing to learn different technologies, fire him.&lt;/p&gt;
&lt;p&gt;If your small agency has a team of 5 or 6 developers, and only one of them knows anything about client side development, then this is a problem.  You can solve it by providing training materials and/or scheduling time for cross-training sessions.&lt;/p&gt;
&lt;h2&gt;3. Keep your code clean!&lt;/h2&gt;
&lt;p&gt;If you are a developer, you may well know that working with another developer's messy or unconventional code is not fun.  In fact, it can be a real time-suck.  Messy code can kill the performance of your application, and adding new features can be a nightmare.  There are big advantages in keeping your code organized and clean, and every team should take steps to make sure everyone is working together to write cleaner code.  Cleaner code means it will be easier (and cheaper!) to maintain.  It also reduces the chances of introducing bugs when adding new features.&lt;/p&gt;
&lt;h2&gt;4. Build libraries of reusable code!&lt;/h2&gt;
&lt;p&gt;Developers should always be thinking about how to structure their code in a way that will allow that code to be reused down the road.  While this may seem obvious, in practice, it may be hard to implement.  There are at least 2 obstacles that prevent this tip from being an effective way to improve efficiency.  First, it requires everyone on the development team to work together, plan, and communicate with each other.  Goals and roadmaps should be established, and then everyone must follow through, long term, and contribute.   Second, if your team works in a sweat shop type environment where there is never enough time, and there are always 5 deadlines looming around the corner, then it may be difficult to convince your operations guy to allocate time for developers to put together a strategy.  If you're the guy who does scheduling, don't fall into that trap.  You may think your keeping everyone on track by standing over them with a whip, but in reality, a lot of time could be saved if the development team had libraries of code and components they could use.&lt;/p&gt;
&lt;h2&gt;5. Be consistent! Follow common coding conventions and guidelines.&lt;/h2&gt;
&lt;p&gt;When you work with a team of guys who use similar coding conventions, it's easy to swap developers between projects without a lot of painful rework.  &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions"&gt;Adobe has put together some guidelines about how you should write your Actionscript code.&lt;/a&gt; This document is intended for those who wish to contribute to the development of the Flex framework, but it's a great resource if you want to establish some consistency in how your team writes their code.  No more pointless arguments about whether the curly braces should be on the next line, or what the naming conventions should be for packages/classes/constants/etc.  If you don't have a neat document like this one, create some simple guidelines for your team to follow.  It will pay off in the end.&lt;/p&gt;
&lt;p&gt;If your team is using an IDE that supports auto-formatting, then that can also help keep things consistent.  &lt;a href="http://fdt.powerflasher.com/"&gt;FDT&lt;/a&gt; is an excellent development environment for Actionscript dev, and it has a nifty auto-formatting feature.  You can predefine how you'd like it to format your code, then just hit Control+Shift+F, and bam, everything is nice and neat.&lt;/p&gt;
&lt;h2&gt;6. Code reviews!&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.osnews.com/story/19266/WTFs_m"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2008/12/wtfm.jpg" alt="" title="WTFs per minute" width="500" height="471" class="alignnone size-full wp-image-279" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What a waste of time, you say?  Everyone should work in complete isolation of each other, you say?  Wrong.  If your team isn't doing some sort of &lt;a href="http://www.deaded.com/staticpages/index.php/codereviewprocess"&gt;semi-formal code reviews&lt;/a&gt;, then there is a good chance that a large portion of the code that is written is never seen by anyone except the author.  This is bad on many levels.  &lt;/p&gt;
&lt;p&gt;Code reviews are a critical part of the consistent growth of a development team.  They offer opportunities for developers to get feedback on their work, and more importantly, they give developers the opportunity to share what they've learned with the team.  Developers love to learn, and they love to share what they've learned with others.  If you allow time periodically for this time of knowledge transfer, it will do wonders for the morale of the team and, ultimately, the success of the software they develop.  &lt;/p&gt;
&lt;h2&gt;7. Use source control!&lt;/h2&gt;
&lt;p&gt;Every development team should be taking advantage of source control.  There are many good source control systems available.  &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; is an example of a free, open-source version control system.  It is widely used by the open source community.  While it may take a little time for a team to get up to speed on how to use a source control system, it will be well worth the time invested to learn it.  &lt;/p&gt;
&lt;p&gt;&lt;a href="http://subversion.tigris.org/"&gt;&lt;img src="http://www.blogna.org/blog/wp-content/uploads/2008/12/subversion_logo_hor-468x64.png" alt="" title="Subversion Logo" width="468" height="64" class="alignnone size-full wp-image-284" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some benefits of using Subversion include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;allows developers to keep a revision history of the changes made to the code, including developer comments about changes&lt;/li&gt;
&lt;li&gt;the revision history includes information about who made the changes and when, so if someone is screwing up the code base, you'll know who to blame&lt;/li&gt;
&lt;li&gt;it provides the ability to roll back to previous releases&lt;/li&gt;
&lt;li&gt;Subversion clients such as TortoiseSVN provide tools to make side by side comparisons of revisions to a file.  For example, if two developers make changes to the same file, these changes can easily be merged together&lt;/li&gt;
&lt;li&gt;allows developers in different locations to collaborate and actively work on the same code base&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;8. Research and Development!&lt;/h2&gt;
&lt;p&gt;There is a reason that Google consistently churns out innovative products.  Sure, they have extra money to dump into R&amp;D, but much of their success comes from their "20-percent time."  &lt;a href="http://www.google.com/support/jobs/bin/static.py?page=about.html&amp;about=eng"&gt;Google allows their "engineers “20-percent time” so that they’re free to work on what they’re really passionate about. Google Suggest, AdSense for Content and Orkut are among the many products of this perk."&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Not only can this be a great creative outlet for your team members, but it will also allow them time to continually build on the skills that they need for production.  If your team members are forced into constantly having to train themselves in order to complete the next task, not only will it drain them and the team's morale, it will also be harder to predict how long it will take to finish a given task.&lt;/p&gt;
&lt;h2&gt;9. Recognize the &lt;a href="http://en.wikipedia.org/wiki/Ninety-ninety_rule"&gt;90-90 Rule!&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The 90-90 rule pokes fun at the fact that some developers tend to oversimplify or underestimate the work that needs to be done.  This is a tough one, especially if you have PMs who can't cross-check the estimates with their own development experience.  I've worked with some developers who are quick to jump up and throw out some numbers when asked for an estimate.  Their estimates are not impossible to achieve, but they fail to realize that unexpected issues ALWAYS arise and cause delays.&lt;/p&gt;
&lt;p&gt;Aside from preparing your team via training and R&amp;D, I can think of 3 ways to prevent this from happening:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pad the numbers and pray.&lt;/li&gt;
&lt;li&gt;Go through a very thorough discovery and planning process so that all of the possible roadblocks can be identified.&lt;/li&gt;
&lt;li&gt;Instead of having a huge requirements document and details specs of what has to happen by X date that's 3 months away, you could adopt &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;principles of agile software development&lt;/a&gt; (I'll detail this in a future post).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each one of these tips really deserves it's own blog post, but for the sake of my time and yours, I'll leave it here.  While there are probably hundreds of things that could be causing delays and missed deadlines, here's the reality of the situation:  your team could be more productive, more predictable, more efficient, and simply enjoy coming to work if you follow these guidelines.  &lt;/p&gt;
&lt;p&gt;If you read through this whole post, and didn't find any of this useful, or you tried them and you're still missing deadlines, &lt;a href="http://en.wikipedia.org/wiki/Anti-pattern"&gt;you might need more help&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogna/~4/i79AcLX_gnA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.blogna.org/blog/workflow/deadlines-9-tips-to-improve-your-dev-teams-chances/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://www.blogna.org/blog/workflow/deadlines-9-tips-to-improve-your-dev-teams-chances/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://www.blogna.org/blog/workflow/deadlines-9-tips-to-improve-your-dev-teams-chances/</feedburner:origLink></entry>
	</feed>
