<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ajar Productions &#187; articles</title>
	<atom:link href="http://ajarproductions.com/blog/category/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://ajarproductions.com/blog</link>
	<description>Animation &#124; Design &#124; Development</description>
	<lastBuildDate>Mon, 21 May 2012 02:13:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Article Round-up</title>
		<link>http://ajarproductions.com/blog/2010/10/19/article-round-up/</link>
		<comments>http://ajarproductions.com/blog/2010/10/19/article-round-up/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 17:37:55 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/?p=646</guid>
		<description><![CDATA[We&#8217;re keeping quite busy around here! Here&#8217;s a quick round-up of some recent articles that I&#8217;ve published. 5 Flash Animation tips in 5 days on the Peachpit blogs: Flash Animation Five Tips in Five Days: Tip 1 &#8211; Easing Flash Animation Five Tips in Five Days: Tip 2 &#8211; Distribute to Layers Flash Animation Five [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re keeping quite busy around here! Here&#8217;s a quick round-up of some recent articles that I&#8217;ve published.</p>
<p>5 Flash Animation tips in 5 days on the <a href="http://www.peachpit.com/blogs/index.aspx" target="_blank">Peachpit blogs</a>:</p>
<ul>
<li><a href="http://www.peachpit.com/blogs/blog.aspx?uk=Flash-Animation-Five-Tips-in-Five-Days-Tip-1--Easing" target="_blank">Flash Animation Five Tips in Five Days: Tip 1 &#8211; Easing</a></li>
<li><a href="http://www.peachpit.com/blogs/blog.aspx?uk=Flash-Animation-Five-Tips-in-Five-Days-Tip-2--Distribute-to-Layers" target="_blank">Flash Animation Five Tips in Five Days: Tip 2 &#8211; Distribute to Layers</a></li>
<li><a href="http://www.peachpit.com/blogs/blog.aspx?uk=Flash-Animation-Five-Tips-in-Five-Days-Tip-3--Bitmap-Masking" target="_blank">Flash Animation Five Tips in Five Days: Tip 3 &#8211; Bitmap Masking</a></li>
<li><a href="http://www.peachpit.com/blogs/blog.aspx?uk=Flash-Animation-Five-Tips-in-Five-Days-Tip-4--SWF-History" target="_blank">Flash Animation Five Tips in Five Days: Tip 4 &#8211; SWF History</a></li>
<li><a href="http://www.peachpit.com/blogs/blog.aspx?uk=Flash-Animation-Five-Tips-in-Five-Days-Tip-5--Targeting-Nested-Symbols-with-ActionScript" target="_blank">Flash Animation Five Tips in Five Days: Tip 5 &#8211; Targeting Nested Symbols with ActionScript</a></li>
</ul>
<p>Also on the Peachpit site, there&#8217;s an excerpt on <a href="http://www.peachpit.com/articles/article.aspx?p=1628184" target="_blank">Character Animation</a> from our recent <a href="http://ajarproductions.com/blog/books/animation-in-flash/" target="_blank">book</a> with <a href="http://mudbubble.com" target="_blank">Chris Georgenes</a>.</p>
<p>I also have a new video tutorial over at <a href="http://active.tutsplus.com/" target="_blank">ActiveTuts+</a> on <a href="http://active.tutsplus.com/tutorials/workflow/creating-advanced-motion-presets-in-flash-with-jsfl/" target="_blank">Creating Advanced Motion Presets in Flash with JSFL</a>.</p>
<p>In addition to the recent advice page I added on <a href="http://ajarproductions.com/blog/learning-flash/" target="_blank">Learning Flash</a>, I&#8217;m working on a page about becoming a graphic designer/Flash animator/digital artist. It includes some of my background and lessons learned. That article is pretty much on hold as we work toward the <a href="http://ajarproductions.com/blog/2010/08/27/smartmouth-sneak-peak/" target="_blank">SmartMouth</a> release (hopefully just another week), and I will pick it up after that.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2010/10/19/article-round-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What a year!</title>
		<link>http://ajarproductions.com/blog/2008/12/31/what-a-year/</link>
		<comments>http://ajarproductions.com/blog/2008/12/31/what-a-year/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 21:25:45 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[articles]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/?p=247</guid>
		<description><![CDATA[Well, 2008 was a pretty good year for us. We released a new animation (finally), put together a reel of previous work (finally), updated the ajarproductions.com main page (finally), and released about 20 (free) extensions. Thanks to my Creatives Services dept. (my main job), I went to Flash Forward and Adobe MAX this year (both [...]]]></description>
			<content:encoded><![CDATA[<p>Well, 2008 was a pretty good year for us. We released a <a href="http://ajarproductions.com/blog/2008/09/02/vp-selection-match-animaton/">new animation</a> (finally), put together a <a href="http://ajarproductions.com/blog/2008/09/08/animation-reel-2008/" target="_blank">reel of previous work</a> (finally), updated the <a href="http://ajarproductions.com" target="_blank">ajarproductions.com</a> main page (finally), and released about <a href="http://ajarproductions.com/blog/adobe-extensions/" target="_blank">20 (free) extensions</a>.</p>
<p>Thanks to my Creatives Services dept. (my main job), I went to <a href="http://www.flashforwardconference.com/" target="_blank">Flash Forward</a> and <a href="http://max.adobe.com/" target="_blank">Adobe MAX</a> this year (both in San Francisco). I also attended <a href="http://www.flashcamp.org/" target="_blank">Flash Camp</a> in SF and picked up the &#8216;Most Useful&#8217; award at the hackathon competition for my <a href="http://ajarproductions.com/blog/2008/10/12/flash-extension-combine-textfields/" target="_blank">Combine Textfields</a> extension. I met some great people at all three events.</p>
<p>Thanks to promotion by <a href="http://keyframer.com/">Chris Georgenes</a>, <a href="http://theflashblog.com/" target="_blank">Lee Brimelow</a>, <a href="http://blog.gilbertconsulting.com/" target="_blank">Keith Gilbert</a>, Michael Ninness, <a href="http://blogs.adobe.com/rgalvan/" target="_blank">Richard Galvan</a>, <a href="http://flashthusiast.com/" target="_blank">Jen DeHaan</a>, <a href="http://blogs.adobe.com/indesignchannel/" target="_blank">Tim Cole</a>, and many others; our extensions picked up a huge amount of new web traffic. Thanks to <a href="http://carrollhach.typepad.com/blog/" target="_blank">Josh Carrollhach</a> for his great suggestions as well.</p>
<p><a href="http://ajarproductions.com/blog/wp-content/uploads/2008/12/webstats2008.gif"><img class="alignnone size-full wp-image-246" title="Ajar webstats for 2008" src="http://ajarproductions.com/blog/wp-content/uploads/2008/12/webstats2008.gif" alt="Ajar webstats for 2008" width="570" height="370" /></a></p>
<p><strong>Lesson:</strong> Provide something useful and people will visit your site. I always knew this, but I started the blog thinking that tutorials would be the thing that we offered most and at some point in the last year I got consumed with creating extensions.</p>
<h2>Plans for 2009</h2>
<p>We&#8217;ve got more extensions on the way. I&#8217;m planning to keep those free. I&#8217;ll be putting out a free desktop utility (built on AIR) in the first week or two. I&#8217;ve begun work on a commercial desktop application as well. Hopefully we&#8217;ll have some more tutorials and animation up as time allows.</p>
<p>Look for us in Chris Georgenes&#8217; <a href="http://www.amazon.com/How-Cheat-Adobe-Flash-CS4/dp/0240521315/ref=sr_1_1/102-3308423-4575342?ie=UTF8&amp;s=books&amp;qid=1176441860&amp;sr=8-1" target="_blank">How to Cheat in Adobe Flash CS4</a>, due out in April 2009.</p>
<p>Amy&#8217;s got and brand new computer and she&#8217;s picking up Flash rather quickly, so hopefully she&#8217;ll have some animation up in the next year.</p>
<p>Thanks for visiting us in 2008! Thanks to everyone who has commented with suggestions and words of support on the blog. Come back and see us in 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2008/12/31/what-a-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selling Extensibility</title>
		<link>http://ajarproductions.com/blog/2007/12/22/selling-extensibility/</link>
		<comments>http://ajarproductions.com/blog/2007/12/22/selling-extensibility/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 01:41:36 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/2007/12/22/selling-extensibility/</guid>
		<description><![CDATA[Extensibility (from Wikipedia) &#8230; is a system design principle where the implementation takes into consideration future growth&#8230; &#8230;the design includes all of the hooks and mechanisms for expanding/enhancing the system with new capabilities without having to make major changes to the system infrastructure&#8230;.A good architecture provides the design principles to ensure this—a roadmap for that [...]]]></description>
			<content:encoded><![CDATA[<h2>Extensibility</h2>
<p>(<a href="http://en.wikipedia.org/wiki/Extensible" target="_blank">from Wikipedia)<br />
</a></p>
<p>&#8230; is a system design principle where the implementation takes into consideration future growth&#8230;</p>
<p>&#8230;the design includes all of the hooks and mechanisms for expanding/enhancing the system with new capabilities without having to make major changes to the system infrastructure&#8230;.A good architecture provides the design principles to ensure this—a roadmap for that portion of the road yet to be built&#8230;These excess capabilities are <em>not frills,</em> but are necessary for maintainability and for avoiding early obsolescence.</p>
<p>&#8230;can also mean that a software system&#8217;s behavior is modifiable at runtime, without recompiling or changing the original source code.</p>
<p>&#8212;-</p>
<p>This idea is useful when building projects that have iterations or phases.  Sometimes the client knows they&#8217;re going to want multiple versions of a given project. Realistically though, this happens all the time, even when one is working with little outside influence. An idea doesn&#8217;t usually look the same on the screen as it does in our minds or in a script. It needs tweaking and fine-tuning. As designers, we often go through myriad iterations before reaching the final product. Over time, I&#8217;ve come to realize ways to save myself future hassle by taking time upfront, at the start of a project, and planning what pieces might change how I can design them to be more flexible and more economic. This &#8216;brain-time&#8217; early on reduces the &#8216;oh crap&#8217; time later.</p>
<p><span id="more-12"></span></p>
<h2>Thinking in terms of extensibility: Grouping</h2>
<p>The simplest and earliest tricks we learn as Flash designers is to create symbols. This saves filesize because Flash only has to load each symbol once, even if it&#8217;s used a number of times. The other great advantage of using symbols is that you can edit it once and affect every instance in your file. The symbol in the library acts as a prototype, or for you philosophers out there, it&#8217;s much like a platonic form, the ethereal ideal from which all earthly instances are based. More generally, symbols could be considered to be a way of <em>grouping</em>. The group of instances has a common set of basic characteristics that are described by the symbol in the library. New characteristics can be added on top of those inherited from an instance&#8217;s group (like giving a movieClip instance a tint or changing it&#8217;s alpha on the stage).</p>
<p>Arranging problems into generic groups reduces the effort needed to solve them. Functions can be made more generic by passing in variables. Instead of writing code out for 4 tweens, why not write a tween function and pass into it the movieClip you want to tween as a variable. You can make the function more generic by passing more variables (start point, end point, duration, etc.).</p>
<p>This, taken to it&#8217;s logically conclusion, begs the question, &#8216;If I can write functions to reuse within a given file, why not write code that I can reuse for multiple files?&#8217; Enter <a href="http://en.wikipedia.org/wiki/Object-oriented_programming" target="_blank">Object-Oriented Programming </a>. Object-Oriented Programming (OOP) allows you to save code in Actionscript class files and access it from Flash by creating an instance of that class. A movieClip, for example, is an instance of the movieClip class. Each movieClip has several properties (x, y, width, height, alpha, etc.) and behaviors (onEnterFrame, onRelease, onRollOut, etc.). These properties and behaviors can be reused in a new class by <em>extending </em>the movieClip class, so that your new class will allow you add to the functionality of movieClip and will contain all the properties and methods that a movieClip does. You can also write classes from scratch. The idea, in short, is invent to the wheel <em>once</em>.</p>
<p>To learn more about OOP in Flash 8 or Flash MX 2004, check out <span class="sans"><a href="http://www.amazon.com/Object-Oriented-ActionScript-Flash-Todd-Yard/dp/1590596196/ref=pd_bbs_sr_1/002-5708333-2532813?ie=UTF8&amp;s=books&amp;qid=1183701200&amp;sr=8-1" target="_blank"><em>Object-Oriented ActionScript For Flash 8</em></a> </span>by Todd Yard and Peter Elst. A new edition for AS3 is also <a href="http://www.amazon.com/Object-Oriented-ActionScript-3-0-Todd-Yard/dp/1590598458" target="_blank">available</a>, but nearly any book on AS3 will have to address OOP. Actionscript 3 is almost entirely OOP-based, though AS2 is geared toward OOP, it is a bit more forgiving of non-OOP-based code.</p>
<h2>The Other Extensibility: &#8216;modifiable at runtime&#8217;</h2>
<p>There&#8217;s probably no better exercise for extracting information into generic groups than <a href="http://en.wikipedia.org/wiki/Xml">XML</a>. An XML document is essentially a text file, it looks a lot like HTML, except that the tags are completely made up. A tag in XML has no predefined meaning, it&#8217;s up to the application to decide what the tags mean. How&#8217;s that for generic?</p>
<p>Flash can pull data from XML at runtime. The XML can be used to swap images, swap text, and even change behaviors if the Flash file has been so setup up. That means that an SWF (Flash&#8217;s export format) can be altered without republishing from Flash or even having Flash installed! This can save tremendous amounts of time for a file that requires frequent updates and it can even empower clients to make small changes without having to come back to the designer. All because a little &#8216;brain-time&#8217; was utilized at the beginning of the project.</p>
<p>There are other methods of customizing at runtime as well. I had a project a while back that was a Flash presentation. It required an IP address specific to the location of the presentation. Since the presentation was going to be given twice at two different locations, it was assumed that a duplicate presentation would need to be made. What&#8217;s more, the IP addresses weren&#8217;t easy to find beforehand, and this customization may have to take place the day of each presentation.  I suggested instead, that a text input come up at the beginning of the presentation so that the presenter could enter the site-specific IP address, it would be stored temporarily, and later displayed in the presentation. This saved a handful of hours and a whole lot of headache, made me look like a genius, and didn&#8217;t even require that the presenter edit an XML file beforehand.</p>
<h2>The Problem with Extensibility:  Selling it to Clients</h2>
<p>Design is an expensive business. Good design is very expensive. And there&#8217;s nothing like a design budget to make a client seem stingy.  It&#8217;s a business that often requires designers to justify their existence and their rates.</p>
<p>At first blush, extensibility planning often seems like an unnecessary expense to a client, and may seem like wasted time to a novice designer/developer, but in truth, when it&#8217;s done well, it&#8217;s a no-brainer. A little brain-time upfront can save designer and client alike a whole lot of headache down the road. It ultimately tends to save money during the revision process as well. Clients (as a big amorphous group) are famous for changing their minds, and the less that you, as the designer, have to wrestle with when this occurs, the better your life will be. The trick then becomes selling it to the client at the start of the project. Some extensibility, of course, can occur without the knowledge of the client. The client doesn&#8217;t usually have to know the fine details of your library structure or coding nuisances, nor do they care. For more ambitious extensibility though, the &#8216;brain-time&#8217; will be evident in the budget.</p>
<p>Imagine you&#8217;re the first person to suggest a car without a crank. Let&#8217;s forget for a moment the awful consequences and inefficiency of a combustion engine. You&#8217;re engineering this car as a freelancer for a large auto manufacturer.  The dilemma is that it will take several extra months to engineer properly, and once it is completed, it will require a bit more testing than the existing model (because it&#8217;s new and slightly more complicated). This extra time on your behalf translates into a greater price tag for the manufacturer and hence, is significantly less attractive than the status quo. The upshot, however, is that drivers of your vehicle won&#8217;t have to crank the car (which might also prevent them from losing an arm). The appeal of this convenience compounds for drivers that live in snowy areas. Your job then (in addition to engineering the thing), is to explain to the manufacturer what this will do for their business, even though it will cost them more upfront, it will ultimately be a huge moneymaker (and may save on lawsuits from people losing their arms). This is the essence of selling extensibility.</p>
<p>The problem is that clients have extreme difficulty ignoring their immediate bottom line, even if it will dramatically improve their bottom line in the foreseeable future. We see this everywhere nowadays, a company cuts wages, not thinking they will  lose employees or hurt morale (and therefore productivity) or that the employees may not be able to afford the goods produced by their own company. It is an unfortunate consequence of unchecked capitalism, and to some degree, human nature. Understanding that, selling extensibility must be approached with patience. I&#8217;m convinced though, that the frustration of repeated explanation will be trumped by not having to go through completely avoidable and repetitive design changes. And hopefully a little &#8216;brain-time&#8217; and a little &#8216;explanation-time&#8217; will still save a whole lot of &#8216;oh-crap&#8217; time in the end.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2007/12/22/selling-extensibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hybrid Developer</title>
		<link>http://ajarproductions.com/blog/2007/04/08/hybrid-developer/</link>
		<comments>http://ajarproductions.com/blog/2007/04/08/hybrid-developer/#comments</comments>
		<pubDate>Sun, 08 Apr 2007 03:32:33 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/2007/04/08/hybrid-developer/</guid>
		<description><![CDATA[I&#8217;ve had a lot of people ask me lately about what I consider myself, a designer or a developer. Well, I&#8217;m both. It seems to take me by surprise every time I&#8217;m asked. Probably because I never planned on being a developer. But now that I do Flash development, I can&#8217;t imagine not doing both. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a lot of people ask me lately about what I consider myself, a designer or a developer. Well, I&#8217;m both.  It seems to take me by surprise every time I&#8217;m asked. Probably because I never planned on being a developer. But now that I do Flash development, I can&#8217;t imagine not doing both. The other night I found this great <a href="http://www.thefwa.com/articles/flashdevs0906.html" title="hybrid developer">article </a>by Nick Velloff that describes what I do pretty well.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2007/04/08/hybrid-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

