<?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>neatFilm.com</title>
	<atom:link href="http://www.neatfilm.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.neatfilm.com</link>
	<description></description>
	<lastBuildDate>Sat, 26 Jun 2010 17:03:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Update AIR 2 SDK on Flash Builder 4</title>
		<link>http://www.neatfilm.com/2010/06/25/update-air-2-sdk-on-flash-builder-4/</link>
		<comments>http://www.neatfilm.com/2010/06/25/update-air-2-sdk-on-flash-builder-4/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:42:47 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=488</guid>
		<description><![CDATA[Update: the easy reliable way to update AIR 2 SDK actually you can grab Flex SDK 4.1: http://renaun.com/blog/2010/06/flex-4-1-includes-flash-player-10-1-and-air-2-0/ Following original post on issues when updating with AIR 2 SDK package directly: I decided to update AIR 2 on Flash Builder 4 for new features, but got some troubles. Had a quick look on AIR 2 release [...]]]></description>
			<content:encoded><![CDATA[<p>Update: the easy reliable way to update AIR 2 SDK actually you can grab Flex SDK 4.1: <a href="http://renaun.com/blog/2010/06/flex-4-1-includes-flash-player-10-1-and-air-2-0/">http://renaun.com/blog/2010/06/flex-4-1-includes-flash-player-10-1-and-air-2-0/</a></p>

<p>Following original post on issues when updating with AIR 2 SDK package directly:</p>

<p>I decided to update AIR 2 on Flash Builder 4 for new features, but got some troubles.</p>

<p>Had a quick look on <a href="http://www.adobe.com/support/documentation/en/air/2/releasenotes_developers.html#h">AIR 2 release notes</a>. Downloaded the new AIR 2 SDK on my iMac and extracted on desktop.</p>

<p><strong>Copy-and-paste on Mac = Fail</strong></p>

<p>For my Mac (snow leopard), the folder to be updated:</p>

<ul>
    <li>Mac Flash Builder 4: /Applications/Adobe Flash Builder 4\sdks\4.0.0</li>
</ul>

<p>In the release notes, Adobe recommend to use command line for Mac OS update, but I think it would be the same to copy/paste with extracted SDK. So I made a backup of 4.0.0, and overwrite directly on top of 4.0.0 folder with new AIR 2 SDK.</p>

<p>Then I opened Flash Builder, well, Flex SDK 4 broken.</p>

<p>Looked into the 4.0.0 folder, surprised to me some original files of Flex SDK 4.0.0 missing after copy-paste.</p>

<p>Then I redo 4.0.0 from backup, this time no longer copy with whole folder but copy files for each folder, except air folders.</p>

<p>Reopened Flash Builder, now I can add Flex SDK 4 successfully.</p>

<p><strong>Snow Leopard File Permission @ Sign with AdobeAIRSDK.tbz2 Package</strong></p>

<p>Whether there&#8217;s any difference between copy-and-paste and command line extract? I opened Terminal to see whether something special I could find. What I saw actually, all new files of AIR 2 SDK, had a different file permission flag like this one: -rw-r&#8211;r&#8211;@</p>

<p>A @ sign!</p>

<p>What&#8217;s @ sign means? &#8220;The @ sign simply means there is a resource fork added to the file, completely normal for files living in an HFS+ file system under OS X, especially Snow Leopard which even keeps compressed data in resource forks. You go jacking with Snowie&#8217;s resource forks and you will get yourself in a heap of trouble.&#8221; &#8220;This attribute is added so that it can ask for user confirmation the first time the downloaded program is run, to help stop malware. Upon confirmation the attribute should be removed and then the program will run normally.&#8221;</p>

<p>I tried again with command line, same as release notes, but, the @sign still exist.</p>

<p>What I can say, @ sign may wouldn&#8217;t cause any problem, but who knows, it better to take it out.</p>

<p>So here&#8217;s what I did. In Terminal jump to the sdk4.0.0 folder:</p>

<ul>
    <li>ls -ald@ *tbz2</li>
    <li>xattr -d com.apple.quarantine *tbz2</li>
    <li>ls -al</li>
    <li>tar jxvf *tbz2</li>
</ul>

<p>For some reason, the @ sign come with a extended attribute value &#8220;com.apple.quarantine&#8221;. Once remove this attribute value from the package, after extract all new SDK files no longer have a @ sign.</p>

<p><strong>Don&#8217;t forget update project-app.xml</strong></p>

<p>This is a important step but in the release notes, it belongs to &#8220;Flash Professional CS4&#8243; section.</p>

<p>The problem is, each AIR project has an application descriptor file app.xml in source root folder, my AIR project created before AIR SDK update, so it was using old namespace, if you run your application for any new class, i.e. ServerSocket, it will give you an error:</p>

<p>VerifyError: Error #1014: Class ServerSocket could not be found.</p>

<p>The reason simply because old AIR project using old SDK namespace, you need update project-app.xml to:</p>

<ul>
    <li>&lt;application xmlns=&#8221;http://ns.adobe.com/air/application/2.0&#8243;&gt;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2010/06/25/update-air-2-sdk-on-flash-builder-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rendering PDF in AIR with Flash (not Flex)</title>
		<link>http://www.neatfilm.com/2010/06/24/rendering-pdf-in-air-with-flash-not-flex/</link>
		<comments>http://www.neatfilm.com/2010/06/24/rendering-pdf-in-air-with-flash-not-flex/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 05:41:24 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=478</guid>
		<description><![CDATA[I googled for methods to render PDF in AIR with Flash. But most of examples were for Flex applications. Actually it also very simple to render PDF with Flash (pure ActionScript project instead of Flex project). The most important thing for rendering PDF in Flash, the stage scale mode must be NO_SCALE, while by default, [...]]]></description>
			<content:encoded><![CDATA[<p>I googled for methods to render PDF in AIR with Flash. But most of examples were for Flex applications. Actually it also very simple to render PDF with Flash (pure ActionScript project instead of Flex project).</p>

<p><img class="alignnone" title="Source code - PDF in AIR" src="http://www.neatfilm.com/wp-content/uploads/2010/06/pdf_air.png" alt="" width="487" height="365" /></p>

<p>The most important thing for rendering PDF in Flash, the stage scale mode must be NO_SCALE, while by default, a pure ActionScript AIR application running in SHOW_ALL mode.</p>

<p><strong>PDF in AIR Application, Limitations</strong></p>

<p>Although PDF and Flash both technologies from Adobe, in AIR seems they&#8217;re separated, PDF always render on top of AIR stage, not really added into display list inside Flash. PDF can be controlled through Javascript, but nothing else. Very limit functionality.</p>

<p>AIR 2 support to open PDF files with native default application, which might be more friendly for users than put PDF inside an AIR application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2010/06/24/rendering-pdf-in-air-with-flash-not-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mr. Jobs the Great and Flash</title>
		<link>http://www.neatfilm.com/2010/04/29/mr-jobs-the-great-and-flash/</link>
		<comments>http://www.neatfilm.com/2010/04/29/mr-jobs-the-great-and-flash/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 04:25:48 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[Flash Professional IDE]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=448</guid>
		<description><![CDATA[So Mr. Jobs the Great had his &#8220;Thoughts on Flash&#8221; today. The most important question to me, why he post such a public letter dedicated on Flash? He fears. A large number of devices, from Google, HP (with Palm), RIM, and other big companies, attacking the market share of iPhone, iPad very soon, with Flash. [...]]]></description>
			<content:encoded><![CDATA[<p>So Mr. Jobs the Great had his &#8220;<a href="http://www.apple.com/hotnews/thoughts-on-flash/">Thoughts on Flash</a>&#8221; today.</p>

<p>The most important question to me, why he post such a public letter dedicated on Flash?</p>

<p>He fears.</p>

<p>A large number of devices, from Google, HP (with Palm), RIM, and other big companies, attacking the market share of iPhone, iPad very soon, with Flash. It&#8217;ll be threat for his early comments on Flash. He fears his words broken.</p>

<p>His App Store was a great success, but his decision to kick CS5 out from iDevices, which also drive away developers who planned to write apps with Flash. Instead he hoped us developing with Apple-C (yes we can, but we <strong>choose not</strong>), lots of CS5 developers will develop apps for his competitors. He fears his store no longer moving to next billions.</p>

<p>As one of the greatest CEO in the world (yes exactly he is, with great respect), he fears the decision to reject Flash, Flash designer/developer community is a fault, he&#8217;s now on the top of mountain, higher risks than his days in the valley. He fears he&#8217;ll no longer Mr. Jobs the Great.</p>

<p><strong>We believe in Choice</strong></p>

<p>Mr. Jobs believe in choice, other than Flash, developers can write application with Apple-C, or Javascript. We too, we believe we have options to use better tools at our hands, not forced to use specific technologies. If Mr. Jobs did the right decision, there will be a number of developers use Flash to develop apps quickly, if we find some performance or other problems, we can rewrite with Apple-C not Flash for best user experiences for consumers (we can even write with assembly).</p>

<p>Otherwise, the choice for iDevice, return -1.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2010/04/29/mr-jobs-the-great-and-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex Interface Design with Scale9Grid Bitmap Class, another approach</title>
		<link>http://www.neatfilm.com/2009/02/10/flex-interface-design-with-scale9grid-bitmap-class-another-approach/</link>
		<comments>http://www.neatfilm.com/2009/02/10/flex-interface-design-with-scale9grid-bitmap-class-another-approach/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 07:07:43 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex SDK]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=381</guid>
		<description><![CDATA[Recently I changed my job to part time, so got some spare time in my own project and some researches on Flex developments. I&#8217;m happy with that as I found more and more solutions in these days when I&#8217;m not pressed by full-time tasks as a major/lead developer and the only senior/firefighter for a team. [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I changed my job to part time, so got some spare time in my own project and some researches on Flex developments. I&#8217;m happy with that as I found more and more solutions in these days when I&#8217;m not pressed by full-time tasks as a major/lead developer and the only senior/firefighter for a team.</p>

<p>What I get most excited is getting some more ideas on interface design methods for Flex/AIR applications. I&#8217;m not a designer, most of my time focus on Flex/Flash coding and I constantly feel bad especially interface design in Flex. Not only Flex itself has no good work flow yet designers can easy to work, also it very hard for team/companies to find a really good designer for Flex projects.</p>

<p>Ok, I&#8217;m talking here is another optional approach in interface design for Flex. See follow I did in my own Flex/Air project:</p>

<p><img class="aligncenter" title="Scale9Bitmap" src="http://www.neatfilm.com/post_images/09Jan/bitmap_result.png" alt="" width="224" height="142" /></p>

<p>Have you seen somewhere like this? Well, I don&#8217;t have designer on my own project, but like good designs when I write codes and testing, so I &#8216;borrowed&#8217; some graphics from CS4 for use temperorily. It looks beautiful isn&#8217;t it? I hate any bad ugly designs in development, man, it&#8217;s <strong>Flash platform</strong>. I like beauties when I&#8217;m working and that&#8217;s why I choose to work as my career.</p>

<p><span style="color: #000000;"><strong>Requirements to make it?</strong></span></p>

<p>The example above I used three images:</p>

<ul>
    <li>left highlight skin image</li>
    <li>right skin image</li>
    <li>dropdown button image</li>
</ul>

<p>Scale9Grid bitmap class, you can get from <a href="http://www.bytearray.org/?p=118">bytearray.org</a>. (I made some small modifications so its Scale9Bitmap class in this example. May write a new UIComponent-based class myself from scratch later when have time.)</p>

<p><strong>How to make it?</strong></p>

<p>The example above is the dock header, each one is a single object based on UIComponent. I show here how to make the right skin inside that component.</p>

<p>createChildren function, load bitmap with url:</p>

<p><img class="aligncenter" title="scale9 create children" src="http://www.neatfilm.com/post_images/09Jan/createChildren.png" alt="" width="517" height="280" /></p>

<p>Complete handler:</p>

<p><img class="aligncenter" title="scale9 complete" src="http://www.neatfilm.com/post_images/09Jan/complete_handler.png" alt="" width="505" height="160" /></p>

<p>updateDisplayList function:</p>

<p><img class="aligncenter" title="scale 9 update display" src="http://www.neatfilm.com/post_images/09Jan/updateDisplay.png" alt="" width="482" height="128" /></p>

<p>The component wouldn&#8217;t create bitmap until loader complete, then insert into bottom layer as its the background image. (In this example I put another skin image above so it will be inserted into layer 1 when the bottom layer has already added, that&#8217;s why I use a flag _rightSkinLoaded.)</p>

<p>The bitmap wouldn&#8217;t renderer until invalidation display list is called, which make maximum performance based on Flex framework. In updateDisplayList function, two skin images will be scaled with scale9Grid rectangles, that&#8217;s where the magic happens.</p>

<p>There&#8217;s one more thing, to get best result in my example, scale 9 bitmaps works better when positioning in pixels, I use int(xx) as followed:</p>

<p><img class="aligncenter" title="bitmap scale 9 pixel" src="http://www.neatfilm.com/post_images/09Jan/bitmap_pixel.png" alt="" width="488" height="123" /></p>

<p><strong>Discussion</strong></p>

<p>There already lots of approaches for interface design/skinning, like Flex/CS4 skinning kits, Degrafa. These approaches &#8216;work&#8217; but I myself much like use scale9grid bitmap inside component directly. Here&#8217;s what I think:</p>

<ul>
    <li>Any designer can make graphics design, can support developers easy to use this approach, in case of scale 9 grid can work perfect (I think most standard interface components?).</li>
    <li>Degrafa can be hard to &#8216;code&#8217; graphics result what designer expect, but image with scale9 rectangle easy.</li>
    <li>Less code (code lines after compiling) and better performance. If there&#8217;s tons of components in your application, you have to take care of performance. If you can, don&#8217;t use CSS skins for highly reused components.</li>
    <li>Bitmap don&#8217;t need to be embedded, which make less size of application and less compiling time if there&#8217;s many bitmaps.</li>
</ul>

<p>Of course, this is just an optional approach for Flex interface design, as scale 9 slices may not work in some designs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2009/02/10/flex-interface-design-with-scale9grid-bitmap-class-another-approach/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQLite as Service in AIR (Flash/Flex)</title>
		<link>http://www.neatfilm.com/2009/01/23/sqlite-as-service-in-air-flashflex/</link>
		<comments>http://www.neatfilm.com/2009/01/23/sqlite-as-service-in-air-flashflex/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 17:01:55 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash Professional IDE]]></category>
		<category><![CDATA[Flex SDK]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=337</guid>
		<description><![CDATA[I introduce here is my approach (not fully complete framework), to use SQLite like an external service in AIR, in most simple way. The following code is how it to be used in Flash/Flex application: That simple? Sure it is. Don&#8217;t forget, in AIR applications, using SQLite we MUST use asynchronous connections for user experiences. [...]]]></description>
			<content:encoded><![CDATA[<p>I introduce here is my approach (not fully complete framework), to use SQLite like an external service in AIR, in most simple way.</p>

<p>The following code is how it to be used in Flash/Flex application:</p>

<p><img class="aligncenter" title="SQL code" src="http://www.neatfilm.com/post_images/09Jan/sqlite_code.png" alt="" width="449" height="201" /></p>

<p>That simple? Sure it is.</p>

<p>Don&#8217;t forget, in AIR applications, using SQLite we<strong> MUST use asynchronous connections</strong> for user experiences. The framework will do rest hard jobs for you.</p>

<p>Framework Features:</p>

<ul>
    <li>SQLConnection instances reused.</li>
    <li>SQLStatement instances reused.</li>
    <li>Statements executed in queue automatically, no extra control required.</li>
    <li>Dealing with SQLite locks inside framework.</li>
    <li>Feedback(result/fault) functions can be reused, similar with pureMVC&#8217;s handleNotifications.</li>
    <li>Support to run feedback functions not original object, i.e. a view sent a query then closed, after query complete, run feedback function in another object/view.</li>
    <li>All statement/connection objects managed and resources can be cleaned.</li>
</ul>

<p><img class="aligncenter" title="Sqlite workflow" src="http://www.neatfilm.com/post_images/09Jan/workflow.png" alt="" width="441" height="235" /></p>

<p><strong>SQLite Performance Best Practices
</strong></p>

<p>It&#8217;s important to get benefit of maximum performance of database, SQLite has its own specifications. One of them, Adobe has already documented, is the cached statements, cached statements can be reused and increase performance largely.</p>

<p>The second one, I didn&#8217;t see anyone mentioned it (maybe I missed), is the lock system of SQLite.</p>

<p>SQLite has a special lock system, have a look the figure followed:</p>

<p><img class="aligncenter" title="Sqlite lock" src="http://www.neatfilm.com/post_images/09Jan/sqlite_lock.png" alt="" width="476" height="303" /></p>

<p>Here&#8217;s several important rules about SQLite lock system:</p>

<ul>
    <li>A connection can have only one transaction (working statement) at a time.</li>
    <li>SQLite can have multiple read transactions(read statement) and one single write transaction(write statement) at the same time.</li>
    <li>When the write transaction working or waiting, no more new connections can work.</li>
    <li>The waiting write transaction will be executed only after all other read transactions complete.</li>
</ul>

<p>The third one, using SQLTransactionLockType.IMMEDIATE for write transaction can improve performance when necessary.</p>

<p>My solution implement first and second, the last one I didn&#8217;t find a good solution to use it in <strong>asynchronous connection mode</strong>, will talk it later.</p>

<p><strong>Framework Structure</strong></p>

<p><img class="aligncenter" title="SQLite framework structure" src="http://www.neatfilm.com/post_images/09Jan/structure.png" alt="" width="359" height="266" /></p>

<p>The framework include three major classes:</p>

<ul>
    <li>SQLManager</li>
    <li>ConnectionPool, manage and reuse connections for statements.</li>
    <li>StatementManager, add/remove statements.</li>
</ul>

<p><img class="aligncenter" title="SQLite classes" src="http://www.neatfilm.com/post_images/09Jan/classes.png" alt="" width="371" height="226" /></p>

<p>These object classes/interface used by the framework:</p>

<ul>
    <li>SQLiteStatement, after an operation finished, it run feedback based on caller and function(string). Feedback function can be different to the original view(object).</li>
    <li>SQLiteConnection</li>
    <li>CachedStatement, statement cannot to be run immediately will be cached as a CachedStatement in waiting list.</li>
    <li>ISQLResponder, optional interface for caller view/object.</li>
</ul>

<p><strong>Framework workflow</strong></p>

<ul>
    <li>Create instance for a database file (file can not exist even)</li>
    <li>Add statements when needed, statements will be initialized.</li>
    <li>View call for execute one or several statements with statement_id, set result/fault function, and flag whether need to ignore fault (if ignore, sqlite will continue to run waiting statements)</li>
    <li>SQLManager get statement instance, or cache your request to a waiting list if already used.</li>
    <li>SQLManager ask ConnectionPool to apply a SQLiteConnection for statement to execute.</li>
    <li>Statement try to execute, if SQLConnection not connected, waiting for that connection and execute.</li>
    <li>Statement completed/fault, call feedback function with statement_id (if asked), and execute next waiting statement if exist.</li>
</ul>

<p>The framework keep minimum instances of SQLConnection and SQLStatement, and easy to be removed as they&#8217;re managed for garbage collection.</p>

<p>I&#8217;m not going to publish source code right now as it&#8217;s not a complete framework yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2009/01/23/sqlite-as-service-in-air-flashflex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MenuBar Skinning</title>
		<link>http://www.neatfilm.com/2009/01/19/menubar-skinning/</link>
		<comments>http://www.neatfilm.com/2009/01/19/menubar-skinning/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 07:25:40 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Flex SDK]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=325</guid>
		<description><![CDATA[The default menubar looks quite bad, I used half day to google and skin it. Ok, the result looks not too bad. Take out top menu item background. Add filter to top item label. Change top item rollover background. Set minimum width for top item. Set minimum width for drop down menu. Skinning for dropdown [...]]]></description>
			<content:encoded><![CDATA[<p>The default menubar looks quite bad, I used half day to google and skin it. Ok, the result looks not too bad.</p>

<p><img class="aligncenter" title="MenuBar" src="http://www.neatfilm.com/post_images/09Jan/menubar.png" alt="" width="511" height="238" /></p>

<ul>
    <li>Take out top menu item background.</li>
    <li>Add filter to top item label.</li>
    <li>Change top item rollover background.</li>
    <li>Set minimum width for top item.</li>
    <li>Set minimum width for drop down menu.</li>
    <li>Skinning for dropdown menu in CSS.</li>
</ul>

<p>Full example source code download <a href="http://www.neatfilm.com/flash/download/MenuBarSkin.zip">here</a>.</p>

<p>File list:</p>

<ul>
    <li>MenuBarSkin.mxml, with menu style and menuBar style especially fillColors, fillAlphas.</li>
    <li>AppMenuBar.as, extend MenuBar class, getMenuAt() to set minimum width for drop-down menu, updateBackground() was to remove the background.</li>
    <li>AppMenuItem.as, extend MenuBarItem, set top item label dropshadow filter and set minimum width for top item.</li>
    <li>MenuItemSkin.as, replace default up/down/over halo skin.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2009/01/19/menubar-skinning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Flash CS4-style Docking in Flex</title>
		<link>http://www.neatfilm.com/2009/01/08/simple-flash-cs4-style-docking-in-flex/</link>
		<comments>http://www.neatfilm.com/2009/01/08/simple-flash-cs4-style-docking-in-flex/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 00:37:21 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex SDK]]></category>
		<category><![CDATA[flash flex docking]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=299</guid>
		<description><![CDATA[Inspired by Degrafa, I spent couple of days to build a quick docking manager. It can add any component/containers into the list dynamically. Full source code download here. My working project with this docking manager:]]></description>
			<content:encoded><![CDATA[<p>Inspired by Degrafa, I spent couple of days to build a quick docking manager. It can add any component/containers into the list dynamically.</p>

<p>Full source code download <a href="http://www.neatfilm.com/flash/download/DockExample.zip">here</a>.</p>

<p style="text-align: center;"><img class="aligncenter" title="Docking" src="http://www.neatfilm.com/post_images/09Jan/dock.png" alt="" width="290" height="443" /></p>

<p style="text-align: left;">My working project with this docking manager:</p>

<p style="text-align: center;"><img class="aligncenter" title="Docking" src="http://www.neatfilm.com/post_images/09Jan/dock2.png" alt="" width="421" height="384" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2009/01/08/simple-flash-cs4-style-docking-in-flex/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AIR Mac-only Crashes</title>
		<link>http://www.neatfilm.com/2008/12/10/air-mac-only-crashes/</link>
		<comments>http://www.neatfilm.com/2008/12/10/air-mac-only-crashes/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 05:14:55 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex SDK]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=290</guid>
		<description><![CDATA[The team I recently working with mainly developing AIR application on Windows Vista, our designers using Macs though. AIR can be run both on Windows and Mac, but we experienced several Mac-only crashes. We have several Flex developers, I have to use some of my time review code for other developers even rewriting some of [...]]]></description>
			<content:encoded><![CDATA[<p>The team I recently working with mainly developing AIR application on Windows Vista, our designers using Macs though. AIR can be run both on Windows and Mac, but we experienced several Mac-only crashes.</p>

<p>We have several Flex developers, I have to use some of my time review code for other developers even rewriting some of buggy code. The designer working on Flex Builder for skinning will run the application on his Mac a few days a month, until he ran Flex Builder we knew the application got crash on Mac. I had to use several hours to find and fix the problem. A month and more later he opened his FB again and the application crash again.</p>

<p><strong>Crash Reasons?</strong></p>

<p>Totally three Mac-only crashes I fixed. Now I work remotely at home and using my own Macbook so there will no more &#8216;silent&#8217; Mac-only crash will happen. Here&#8217;s reasons I found which caused Mac-only crashes:</p>

<ul>
    <li>SQLite database object AMF3 <em>deserialization</em>, in a special case of object serialized with a single object to be stored several times into database table.</li>
    <li>A fault application menu was added.</li>
    <li>SQLite database, a write transaction was added into a function which has several read transactions running in parallel. Also, it seems several &#8216;select all&#8217; read transactions at the same time cause occasionally crash as well.</li>
</ul>

<p><strong>Avoid Mac-only Crashes</strong></p>

<ul>
    <li>If application need to be run on Mac, <strong>have at least one developer working on Mac</strong>.
Fixing a Mac-only bug after several weeks is hard than regular bugs. For agile development, bug should be find as soon as possible, if a month later find application cannot be run on Mac, a senior developer have to use at least several hours if unlucky.</li>
    <li>Be careful when working on <strong>SQLite database</strong>.
The first crash was because of an unsafe usage of reference, reuse a single object reference sometime cause unknown issues like this; for 3rd crash, although SQLite can have a single write transaction to be run at the same time of several read transactions, as &#8216;writer&#8217; will wait for an exclusive lock until all &#8216;readers&#8217; complete, SQLite engine inside AIR might not handler it correctly, at least on Mac.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2008/12/10/air-mac-only-crashes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AIR 1.5, SQlite now encrypted.</title>
		<link>http://www.neatfilm.com/2008/11/17/air-15-sqlite-now-encrypted/</link>
		<comments>http://www.neatfilm.com/2008/11/17/air-15-sqlite-now-encrypted/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 16:59:28 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Adobe AIR]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=277</guid>
		<description><![CDATA[I have a long time searching for security on SQLite database, as far as I know encryption was a commercial extension for SQLite and not sure whether Adobe will implement it for AIR SQlite engine. It really a great news now Adobe AIR 1.5 support encrypted SQLite database. Thanks, Adobe AIR team. Using encryption with [...]]]></description>
			<content:encoded><![CDATA[<p>I have a long time searching for security on SQLite database, as far as I know encryption was a commercial extension for SQLite and not sure whether Adobe will implement it for AIR SQlite engine. It really a great news now Adobe AIR 1.5 support encrypted SQLite database. Thanks, Adobe AIR team.</p>

<p><a href="http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS8AFC5E35-DC79-4082-9AD4-DE1A2B41DAAF.html">Using encryption with SQL databases</a></p>

<p><a href="http://www.adobe.com/devnet/logged_in/rchristensen_lpolanco_air_1.5.html">Introducing Adobe AIR 1.5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2008/11/17/air-15-sqlite-now-encrypted/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Usability is so Important, Please</title>
		<link>http://www.neatfilm.com/2008/11/07/usability-is-so-important-please/</link>
		<comments>http://www.neatfilm.com/2008/11/07/usability-is-so-important-please/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 17:46:55 +0000</pubDate>
		<dc:creator>george</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex SDK]]></category>

		<guid isPermaLink="false">http://www.neatfilm.com/?p=268</guid>
		<description><![CDATA[I got a hard time to realize a team to develop a large RIA desktop application, not only myself should understand how important usability is, but also other team members even juniors and bosses. New Feature Requests We all understand application development change very often. It happens for every team, bosses will add new features [...]]]></description>
			<content:encoded><![CDATA[<p>I got a hard time to realize a team to develop a large RIA desktop application, not only myself should understand how important usability is, but also other team members even juniors and bosses.</p>

<p><strong>New Feature Requests</strong></p>

<p>We all understand application development change very often. It happens for every team, bosses will add new features never discussed before and marked as &#8216;very important&#8217;. Problem is, for a desktop application, new features usually means redesign at least some parts of UI, also can break user experience if no enough usability discussion and clearly understand what user will expect (which very often is different with the new feature defined), not only designer but also developer have to change a lot. For example, add some new feature without enough space on UI, new behavior in one component which UI should update other relative components at the same time. Not only we need time for new features, bad definition can result arguments between team members and boss, which actually conflict between what boss expect and what user expect in real application.</p>

<p><strong>Designer and Usability</strong></p>

<p>Designers has a good feeling of usability, problem is designers not the person produce the application, and usually designers can design single UI but not the running UI, so it quite often developers have to feedback some design problems. For me I will try to discuss thoroughly before write code, understand what designers want and what will happen in real application that can affect user experiences. Discussion of user experiences between designer and developer should be as early as possible.</p>

<p>Also, designer have to test application from time to time, to find usability problem early and try to fix it.</p>

<p><strong>Junior Developer and Usability</strong></p>

<p>Juniors usually need time to learn and get improved, thinking about usability also hard for them. Problem is user experience is about whole application not parts which experienced developers working on, without fix major usability problems, application can never give anybody good user experiences. Try to ask new developers to catch up more tasks than what they can without fix enough usability problem, is a disaster for the whole application sadly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatfilm.com/2008/11/07/usability-is-so-important-please/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
