<?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>FlashApe &#187; rich</title>
	<atom:link href="http://www.visible-form.com/blog/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.visible-form.com/blog</link>
	<description>Rich Rodecker's blog on flash, flex, actionscript, javascript, and php, with a dash of randomness</description>
	<lastBuildDate>Tue, 22 Jun 2010 07:46:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mac eclipse word boundary issue fix</title>
		<link>http://www.visible-form.com/blog/mac-eclipse-word-boundary-issue-fix/</link>
		<comments>http://www.visible-form.com/blog/mac-eclipse-word-boundary-issue-fix/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 07:46:26 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=456</guid>
		<description><![CDATA[After updating Java on Snow Leopard (OS X 10.6) I hit a crazy issue with my Flash Builder install, where the editors no longer recognized the dot character as a word separator. This was driving me totally crazy since I&#8217;m always using the arrow keys to move around and edit text. After giving up completely]]></description>
			<content:encoded><![CDATA[<p>After updating Java on Snow Leopard (OS X 10.6) I hit a crazy issue with my Flash Builder install, where the editors no longer recognized the dot character as a word separator.  This was driving me totally crazy since I&#8217;m always using the arrow keys to move around and edit text.</p>
<p>After giving up completely and being resigned to abandon FB and jump ship to FDT over this issue, I found a solution completely by accident while doing something unrelated:</p>
<p>Go to System Preferences > Language &#038; Text > Text,  and set the &#8216;Word Break&#8217; dropdown to &#8216;English, United States (Computer)&#8217;.  I needed to log out and log back in again, and everything was back to normal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/mac-eclipse-word-boundary-issue-fix/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SpamAssassin 2010 bug</title>
		<link>http://www.visible-form.com/blog/spamassassin-2010-bug/</link>
		<comments>http://www.visible-form.com/blog/spamassassin-2010-bug/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 22:14:28 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[Server-Side]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=454</guid>
		<description><![CDATA[I have a DV server over at MediaTemple, and recently I started to get a lot of legitimate mail marked as spam. I checked out the raw headers in the email, and they all had FH_DATE_PAST_20XX in the X-Spam-Status header. Turns out SpamAssassin had a bug with that particular rule, which would make it think]]></description>
			<content:encoded><![CDATA[<p>I have a DV server over at MediaTemple, and recently I started to get a lot of legitimate mail marked as spam. I checked out the raw headers in the email, and they all had FH_DATE_PAST_20XX in the X-Spam-Status header.</p>
<p>Turns out SpamAssassin had a bug with that particular rule, which would make it think 2010 dates were &#8220;grossly in the future&#8221;.  Running sa-update should solve it.</p>
<p>More info at <a href="http://kb.mediatemple.net/questions/1792/SpamAssassin+2010+bug">http://kb.mediatemple.net/questions/1792/SpamAssassin+2010+bug</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/spamassassin-2010-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon S3 &#8220;RequestTimeTooSkewed&#8221; error</title>
		<link>http://www.visible-form.com/blog/amazon-s3-requesttimetooskewed-error/</link>
		<comments>http://www.visible-form.com/blog/amazon-s3-requesttimetooskewed-error/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 00:03:05 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=448</guid>
		<description><![CDATA[I was trying to connect to S3 today, and both Transmit and Forklift were giving me connection errors: PLAIN TEXT XML: &#60;Error&#62; &#160; &#160; &#60;Code&#62;RequestTimeTooSkewed&#60;/Code&#62; &#160; &#160; &#60;Message&#62;The difference between the request time and the current time is too large.&#60;/Message&#62; &#160; &#160; &#60;MaxAllowedSkewMilliseconds&#62;900000&#60;/MaxAllowedSkewMilliseconds&#62; &#160; &#160; &#60;RequestId&#62;68532E845A05B015&#60;/RequestId&#62; &#160; &#160; &#60;HostId&#62;FfoBOO+7Kh+0Aa35f+Oa0P+Beeym+10LNyLVTGI3VgEHkVjotak8+L1QHaWOsIaf&#60;/HostId&#62; &#160; &#160; &#60;RequestTime&#62;Fri, 22 Jan 2010]]></description>
			<content:encoded><![CDATA[<p>I was trying to connect to S3 today, and both Transmit and Forklift were giving me connection errors:</p>
<div class="igBar"><span id="lxml-2"><a href="#" onclick="javascript:showPlainTxt('xml-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">XML:</span>
<div id="xml-2">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Error<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Code<span style="font-weight: bold; color: black;">&gt;</span></span></span>RequestTimeTooSkewed<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Code<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Message<span style="font-weight: bold; color: black;">&gt;</span></span></span>The difference between the request time and the current time is too large.<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Message<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;MaxAllowedSkewMilliseconds<span style="font-weight: bold; color: black;">&gt;</span></span></span>900000<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/MaxAllowedSkewMilliseconds<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;RequestId<span style="font-weight: bold; color: black;">&gt;</span></span></span>68532E845A05B015<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/RequestId<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;HostId<span style="font-weight: bold; color: black;">&gt;</span></span></span>FfoBOO+7Kh+0Aa35f+Oa0P+Beeym+10LNyLVTGI3VgEHkVjotak8+L1QHaWOsIaf<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/HostId<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;RequestTime<span style="font-weight: bold; color: black;">&gt;</span></span></span>Fri, 22 Jan 2010 00:10:57 GMT<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/RequestTime<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;ServerTime<span style="font-weight: bold; color: black;">&gt;</span></span></span>2010-01-21T23:53:58Z<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/ServerTime<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Error<span style="font-weight: bold; color: black;">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>The problem:  my system clock was manually set 15 minutes fast.  The s3 api will check the request time against the time on the server to see if it's been too long, and if it has, it returns the above error. Fixing the time solved it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/amazon-s3-requesttimetooskewed-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sending an ArrayCollection &#8211; Flex to amfphp</title>
		<link>http://www.visible-form.com/blog/sending-an-arraycollection-flex-to-amfphp/</link>
		<comments>http://www.visible-form.com/blog/sending-an-arraycollection-flex-to-amfphp/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 14:00:24 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=437</guid>
		<description><![CDATA[Here are my tweaks to amfphp for sending an ArrayCollection from Flex to amfphp. May not be the cleanest or most proper but it works. From what I understand, there is an ArrayCollection class included in Zend_AMF, but I haven't looked into that. I've been sending ArrayCollections from php to Flex for a while, it's]]></description>
			<content:encoded><![CDATA[<p>Here are my tweaks to amfphp for sending an ArrayCollection from Flex to amfphp.  May not be the cleanest or most proper but it works.  From what I understand, there is an ArrayCollection class included in Zend_AMF, but I haven't looked into that.</p>
<p>I've been sending ArrayCollections from php to Flex for a while, it's pretty simple and info for doing that can be found at Wade Arnold's blog <a href="http://wadearnold.com/blog/flash/amfphp/amfphp-arraycollection" title="AMFPHP ArrayCollection">here</a>.   The issue going the other direction is that Flex only sends the AC's underlying source array when serializing it for amf.  So when amfphp unpacks the data, you're dealing with a normal array.</p>
<p>Obviously, the first thing you'll need is your ArrayCollection class to use (I use the version that extends ArrayObject at the link above), and make sure it is in your include path.</p>
<p>The first tweak to amfphp is to the method <code>AMFBaseDeserializer->mapClass()</code>.  In that method, right after the checks looking for CommandMessage and RemotingMessage types, I added a similar check for ArrayCollection:</p>
<div class="igBar"><span id="lphp-7"><a href="#" onclick="javascript:showPlainTxt('php-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-7">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$typeIdentifier</span> == <span style="color:#FF0000;">"flex.messaging.io.ArrayCollection"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">new</span> ArrayCollection<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Next change is to the <code>AMFDeserializer->readAmf3Object()</code> method.  Near the middle of the method, around line 570, there is a check for ArrayCollection, and if found it will call the readAmf3Data() method.  I changed it to pass in a value of "true" to the method, you'll see why in a sec:</p>
<div class="igBar"><span id="lphp-8"><a href="#" onclick="javascript:showPlainTxt('php-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-8">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$classDefinition</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'externalizable'</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$type</span> == <span style="color:#FF0000;">'flex.messaging.io.ArrayCollection'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$obj</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Data</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now just two small tweaks to the <code>readAmf3Data()</code> method.  I changed the method signature to add an $isArrayCollection parameter, which just gets forwarded on when calling readAmf3Array.  Here's the whole method:</p>
<div class="igBar"><span id="lphp-9"><a href="#" onclick="javascript:showPlainTxt('php-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-9">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> readAmf3Data<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$isArrayCollection</span> = <span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$type</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readByte</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">switch</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$type</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x00 : <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">null</span>; <span style="color:#FF9933; font-style:italic;">//undefined</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x01 : <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">null</span>; <span style="color:#FF9933; font-style:italic;">//null</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x02 : <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">false</span>; <span style="color:#FF9933; font-style:italic;">//boolean false</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x03 : <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">true</span>;&nbsp; <span style="color:#FF9933; font-style:italic;">//boolean true</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x04 : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Int</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x05 : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readDouble</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x06 : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3String</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x07 : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3XmlString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x08 : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Date</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x09 : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Array</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$isArrayCollection</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x0A : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Object</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x0B : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3XmlString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> 0x0C : <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3ByteArray</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">default</span>: <a href="http://www.php.net/trigger_error"><span style="color:#000066;">trigger_error</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"undefined Amf3 type encountered: "</span> . <span style="color:#0000FF;">$type</span>, <span style="color:#000000; font-weight:bold;">E_USER_ERROR</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now just another two small tweaks to the readAmf3Array method.  As with the readAmf3Data() method, we add the $isArrayCollection parameter.  Within the body of the method, I just check if that param is true when creating the $hashtable variable, and if it is, use an ArrayCollection instead of a regular array:</p>
<div class="igBar"><span id="lphp-10"><a href="#" onclick="javascript:showPlainTxt('php-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-10">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> readAmf3Array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$isArrayCollection</span> = <span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$handle</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Int</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$inline</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$handle</span> &amp; <span style="color:#CC66CC;color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>&nbsp; != <span style="color:#CC66CC;color:#800000;">0</span> <span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#0000FF;">$handle</span> = <span style="color:#0000FF;">$handle</span>&gt;&gt; <span style="color:#CC66CC;color:#800000;">1</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$inline</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$hashtable</span> = <span style="color:#0000FF;">$isArrayCollection</span> ? <span style="color:#000000; font-weight:bold;">new</span> ArrayCollection<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> : <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">storedObjects</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = &amp; <span style="color:#0000FF;">$hashtable</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$key</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3String</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">while</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$key</span> != <span style="color:#FF0000;">""</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$value</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Data</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$hashtable</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#0000FF;">$key</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF;">$value</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$key</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3String</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$i</span> = <span style="color:#CC66CC;color:#800000;">0</span>; <span style="color:#0000FF;">$i</span> &lt;<span style="color:#0000FF;">$handle</span>; <span style="color:#0000FF;">$i</span>++<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">//Grab the type for each element.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$value</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">readAmf3Data</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$hashtable</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#0000FF;">$i</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF;">$value</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#0000FF;">$hashtable</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">else</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">storedObjects</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#0000FF;">$handle</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>That's it.  Now I can send the an AC to the server, serialize it, unserialize it and send it back to Flex with no issues.  The one thing that may an issue is if one of the items within an AC is also another AC...haven't checked out if that works yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/sending-an-arraycollection-flex-to-amfphp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Frameworks 2.0</title>
		<link>http://www.visible-form.com/blog/frameworks-2-0/</link>
		<comments>http://www.visible-form.com/blog/frameworks-2-0/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 08:19:03 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=434</guid>
		<description><![CDATA[Subititled: "The Rise of 'Burger King' frameworks....'have it your way'". I am loving the new trend I'm seeing in a lot of the frameworks (both client- and server-side) I've been checking out lately. What I'm seeing is a move away from the monolithic, "do it my way or suffer trying to work around it" approach,]]></description>
			<content:encoded><![CDATA[<p>Subititled: "The Rise of 'Burger King' frameworks....'have it your way'".</p>
<p>I am loving the new trend I'm seeing in a lot of the frameworks (both client- and server-side) I've been checking out lately.  What I'm seeing is a move away from the monolithic, "do it my way or suffer trying to work around it" approach, towards more architectures that provide a more generalized, "less is more" approach, even to the point that some of the functionality and/or features of the "do-it-all" frameworks are being broken out into smaller, specialized bits that allow the developer to pick and choose between whichever approach best suits their style.</p>
<p>To me, the main benefit of the new trend is readily apparent:  just as different individuals would write the same story different ways, the same goes for writing code.  For one framework to dictate too much influence over too many aspects of an application, or even worse to make it difficult to extend or adapt to suit your needs, provides too much lock-in and and can hinder more than it's trying to help.</p>
<p>On the flash/flex side, frameworks like <a href="http://www.robotlegs.org/">RobotLegs</a> , <a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm">Cairngorm 3</a>, <a href="http://www.gaiaflashframework.com/">Gaia</a>, and even libraries like <a href="http://casalib.org/">CasaLib</a> provide example of this (ok, Gaia probably goes a little further as far as initial structure, but once you start developing it stays out of your way).  On the backend, for php you have things such as <a href="http://konstrukt.dk/">Konstrukt</a>, a "URI-to-controller-mapping" (i.e., REST) framework which handles "routing based on logic rather than rules", and the <a href="http://www.outlet-orm.org/site/">Outlet</a> and <a href="http://phpdatamapper.com/">phpDataMapper</a> ORM frameworks.</p>
<p>One thing about the above mentioned frameworks is that most, if not all, can be used <em>in conjunction with each other</em> (<a href="http://jessewarden.com/2009/10/how-to-use-robotlegs-on-top-of-gaia-part-1-of-3-quickstart.html">like so</a>).   If you don't like the way one part does it's job, you can more than likey swap out that part with a similar one without affecting the other parts of an application, provided you we good with encapsulation and keeping things pretty cleanly separated. This is not an insignificant side effect of the "less-is-more" approach, it's the central theme.  It's having it your way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/frameworks-2-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thank you, Steve Webster</title>
		<link>http://www.visible-form.com/blog/thank-you-steve-webster/</link>
		<comments>http://www.visible-form.com/blog/thank-you-steve-webster/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 17:20:14 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=432</guid>
		<description><![CDATA[Since I always like to give credit where it's due, I just wanted to send a quick thanks to Steve Webster, who noted on his blog today today that he's moving on from Flash/Flex development. His book "Foundation PHP for Flash", as well as his help through the various flash forums and email, were absolutely]]></description>
			<content:encoded><![CDATA[<p>Since I always like to give credit where it's due, I just wanted to send a quick thanks to Steve Webster, who noted on his blog today today that he's <a href="http://dynamicflash.com/2009/10/moving-on/">moving on from Flash/Flex development</a>.  His book "<a href="http://www.friendsofed.com/book.html?isbn=9781903450161">Foundation PHP for Flash</a>", as well as his help through the various flash forums and email, were absolutely pivotal in my flash dev career.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/thank-you-steve-webster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atlassian Offering $10 Starter licenses for most products</title>
		<link>http://www.visible-form.com/blog/atlassian-offering-10-starter-licenses-for-most-products/</link>
		<comments>http://www.visible-form.com/blog/atlassian-offering-10-starter-licenses-for-most-products/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 18:39:12 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=429</guid>
		<description><![CDATA[I use JIRA a lot, i think it's probably the best issue-tracking tool, even one of the best overall web-based applications out there. Today I received an email that Atlassian is offering starter licenses for six of its products at $10 each: JIRA, Confluence, Green Hopper, Bamboo, Fisheye, and Crowd. You get 10 users each]]></description>
			<content:encoded><![CDATA[<p>I use JIRA a lot, i think it's probably the best issue-tracking tool, even one of the best overall web-based applications out there.  Today I received an email that <a href="http://www.atlassian.com/starter/">Atlassian is offering starter licenses for six of its products at $10 each</a>:  <a href="http://www.atlassian.com/software/jira/">JIRA</a>, <a href="http://www.atlassian.com/software/confluence/">Confluence</a>, <a href="http://www.atlassian.com/software/greenhopper/">Green Hopper</a>, <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a>, <a href="http://www.atlassian.com/software/fisheye/">Fisheye</a>, and <a href="http://www.atlassian.com/software/crowd/">Crowd</a>.  You get 10 users each for JIRA, Confluence, and Green Hopper, 10 plans on Bamboo, 10 committers on FishEye, and 50 users on Crowd.  A great deal for some great products.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/atlassian-offering-10-starter-licenses-for-most-products/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gaia &#8211; Yeah, I&#8217;m gonna have to give it props again</title>
		<link>http://www.visible-form.com/blog/gaia-yeah-im-gonna-have-to-give-it-props-again/</link>
		<comments>http://www.visible-form.com/blog/gaia-yeah-im-gonna-have-to-give-it-props-again/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 07:59:27 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=427</guid>
		<description><![CDATA[I know I just posted about Gaia recently, but I'm just about to wrap up the same project and after working with it some more and getting to know it a little better, I really have to say again how impressed I am with it. I'll put it this way: it was the first framework]]></description>
			<content:encoded><![CDATA[<p>I know I just <a href="http://www.visible-form.com/blog/gaia-now-thats-impressive/">posted about Gaia recently</a>, but I'm just about to wrap up the same project and after working with it some more and getting to know it a little better, I really have to say again how impressed I am with it. I'll put it this way:  it was the first framework of any kind that I actually enjoyed getting into.  SO MUCH of the kaka grunt work is taken care of for you, it just makes development a breeze, and flexible enough to allow you to do whatever you need to do.  Much more of an "I'm here to help" vibe then the "YOU WILL FOLLOW MY RULES OR I WILL MAKE YOUR LIFE MISERABLE" crap found in just about every other framework.</p>
<p>I'll say it again:  if you're developing Flash sites and not using <a href="http://www.gaiaflashframework.com/" title="Gaia Flash Framework">Gaia</a>, you're probably wasting you're time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/gaia-yeah-im-gonna-have-to-give-it-props-again/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails Security Guide</title>
		<link>http://www.visible-form.com/blog/ruby-on-rails-security-guide/</link>
		<comments>http://www.visible-form.com/blog/ruby-on-rails-security-guide/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 06:31:27 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=424</guid>
		<description><![CDATA[Just read through the Ruby on Rails Security Guide, and i Have to say there is some great info in there. I don't use RoR at all, but a lot of the info would apply to any web application.]]></description>
			<content:encoded><![CDATA[<p>Just read through the <a href="http://guides.rails.info/security.html" title="Ruby on Rails Security Guide">Ruby on Rails Security Guide</a>, and i Have to say there is some great info in there.  I don't use RoR at all, but a lot of the info would apply to any web application.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/ruby-on-rails-security-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Senior Flash/Flex Developer available</title>
		<link>http://www.visible-form.com/blog/senior-flashflex-developer-available/</link>
		<comments>http://www.visible-form.com/blog/senior-flashflex-developer-available/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 20:00:11 +0000</pubDate>
		<dc:creator>rich</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.visible-form.com/blog/?p=420</guid>
		<description><![CDATA[I've recently completed a long-term project, so I'm currently looking for some remote (off-site) freelancing projects. I am an advanced Flex/Actionscript 3 developer with about 6 years of heavy actionscript development. Key Skills: Flash – Actionscript 3.0, Flex, AMFPHP, Flash Media Server, AIR, Flex Builder/Eclipse, ElectroServer Frameworks – PureMVC , Mate, Cairngorm, Gaia Server Side]]></description>
			<content:encoded><![CDATA[<p>I've recently completed a long-term project, so I'm currently looking for some remote (off-site) freelancing projects.  I am an advanced Flex/Actionscript 3 developer with about 6 years of heavy actionscript development.  </p>
<p>Key Skills:<br />
<strong>Flash</strong> – Actionscript 3.0, Flex, AMFPHP, Flash Media Server, AIR, Flex Builder/Eclipse, ElectroServer<br />
<strong>Frameworks</strong> – PureMVC , Mate, Cairngorm, Gaia<br />
<strong>Server Side</strong> – PHP, MySQL, Propel ORM, ImageMagick, Amazon EC2/S3/SQS<br />
<strong>Other</strong> – SVN, CVS, XML, Javascript<br />
<strong>Software design</strong> – OO design, Design Patterns</p>
<p>My resume can be found at <a href="http://www.f1fd.com/resume/">http://www.f1fd.com/resume</a>, and you can email me at f1info@f1fd.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.visible-form.com/blog/senior-flashflex-developer-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
