<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Daniel R.</title>
      <link>http://life.neophi.com/danielr/</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Thu, 03 Jul 2008 11:00:36 -0500</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.3svn-20070408163858</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Adobe&apos;s David Coletta on Buzzword&apos;s Automated Testing Framework</title>
         <description><![CDATA[<p>This past Tuesday the <a href="http://www.bostonfug.org/">Boston Flex User Group</a> held its second meeting. <a href="http://www.colettas.org/">David Coletta</a> from Adobe's Buzzword team spoke about Automated Testing Framework. This was a deeper dive into the topic he presented at <a href="http://life.neophi.com/danielr/2007/12/flex_camp_boston_2007_building.html">Flex Camp Boston 2007</a>. I counted about 50 people at the meeting. It was a very interactive session with a bunch of good questions coming from the audience. Below are my rough notes from the presentation.</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/05/adobes_david_coletta_on_buzzwo.html</link>
         <guid>http://life.neophi.com/danielr/2008/05/adobes_david_coletta_on_buzzwo.html</guid>
         <category>Flex</category>
         <pubDate>Fri, 16 May 2008 09:26:42 -0500</pubDate>
      </item>
            <item>
         <title>Flex 4</title>
         <description><![CDATA[<p>Some of the <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+4">first hints about Flex 4</a> have been posted to the <a href="http://opensource.adobe.com/">Adobe Open Source</a> site. Great to see the future development of the Flex platform starting off this open.</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/04/flex_4.html</link>
         <guid>http://life.neophi.com/danielr/2008/04/flex_4.html</guid>
         <category>Flex</category>
         <pubDate>Wed, 16 Apr 2008 07:50:10 -0500</pubDate>
      </item>
            <item>
         <title>Debugging Bindings with BindingManager</title>
         <description><![CDATA[<p>At last night's <a href="http://bostonfug.com/">BFUG</a> meeting <a href="http://blogs.adobe.com/pfarland/">Peter Farland</a> demonstrated an undocumented class called <strong>BindingManager</strong> that is handy for debugging bindings in Flex. This class exists in both Flex 2 and Flex 3. Below is a quick example of how it is used:</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/04/debugging_bindings_with_bindin.html</link>
         <guid>http://life.neophi.com/danielr/2008/04/debugging_bindings_with_bindin.html</guid>
         <category>Flex</category>
         <pubDate>Wed, 09 Apr 2008 08:25:23 -0500</pubDate>
      </item>
            <item>
         <title>Adobe AIR Linux Alpha</title>
         <description><![CDATA[<p>Adobe has dropped the first public bits in their effort to port Adobe AIR to the Linux platform. You can download them from <a href="http://labs.adobe.com/technologies/air/">Adobe Labs</a>. Keep in mind this is an alpha release and everything definitely isn't there, yet.</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/03/adobe_air_linux_alpha.html</link>
         <guid>http://life.neophi.com/danielr/2008/03/adobe_air_linux_alpha.html</guid>
         <category>Flex</category>
         <pubDate>Mon, 31 Mar 2008 08:27:26 -0500</pubDate>
      </item>
            <item>
         <title>User experience considerations with SQLite operations</title>
         <description><![CDATA[<p>An article I wrote for the <a href="http://www.adobe.com/devnet/">Adobe Developer Connection</a> entitled "<a href="http://www.adobe.com/devnet/air/flex/articles/air_sql_operations.html">User experience considerations with SQLite operations</a>" has been published. Its focus is on issues <a href="http://www.allurent.com/">Allurent</a> uncovered while working with a SQLite database on the <a href="http://www.allurent.com/page.php?id=70">Allurent Desktop Connection</a> application for <a href="http://www.anthropologie.com/">Anthropologie </a>that was demoed at <a href="http://adobemax2007.com/na/">Adobe MAX 2007 in Chicago</a>.</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/03/user_experience_considerations.html</link>
         <guid>http://life.neophi.com/danielr/2008/03/user_experience_considerations.html</guid>
         <category>Flex</category>
         <pubDate>Mon, 10 Mar 2008 18:00:24 -0500</pubDate>
      </item>
            <item>
         <title>Antennae 1.2.0 Released</title>
         <description><![CDATA[<p>Antennae version 1.2.0 has been released. Grab it from <a href="http://code.google.com/p/antennae/">http://code.google.com/p/antennae/</a>. Highlights of this release include:</p>

<ul>
<li>Changed to standard naming conventions for properties, targets, tasks, and directories</li>
<li>Updated support for AIR 1.0</li>
</ul>

<p>For anyone not familiar with Antennae here is a brief description:</p>

<blockquote>Antennae is an open-source project designed to automate the building and testing of Flex applications. It uses Ant and Java to provide cross platform utilities to compile Flex libraries, Flex applications, generate FlexUnit TestSuites, and run FlexUnit tests in an automated manner. Antennae also defines a framework for building complex projects with multiple dependencies and intelligently handling recompilation.
</blockquote>
]]></description>
         <link>http://life.neophi.com/danielr/2008/03/antennae_120_released.html</link>
         <guid>http://life.neophi.com/danielr/2008/03/antennae_120_released.html</guid>
         <category>Flex</category>
         <pubDate>Sat, 01 Mar 2008 16:15:53 -0500</pubDate>
      </item>
            <item>
         <title>Flex 3, AIR 1, and OpenSource</title>
         <description><![CDATA[<p>Wow, it's amazing to think about all of the wonderful work that Adobe put into getting <a href="http://www.adobe.com/go/flex">Flex 3</a> and <a href="http://www.adobe.com/go/air">AIR 1</a> out the door. My congratulations to everyone involved. Lastly the source for the Flex compilers is <a href="http://opensource.adobe.com/flexsdk">open source</a>, I've already thought of some things I want to try with that. Download, play, enjoy.</p>

<p>As a side note, I've updated my simple <a href="http://www.neophi.com/apps/#WindowExplorer">Window Explorer</a> application to run on the released version of AIR.</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/02/flex_3_air_1_and_opensource.html</link>
         <guid>http://life.neophi.com/danielr/2008/02/flex_3_air_1_and_opensource.html</guid>
         <category>Flex</category>
         <pubDate>Mon, 25 Feb 2008 01:12:33 -0500</pubDate>
      </item>
            <item>
         <title>Abusing try..catch and throw</title>
         <description><![CDATA[<p>While looking something else up in the AS3 documentation this long weekend, I ran across this comment:</p>

<blockquote><em>Typically</em>, you throw instances of the Error class or its subclasses (see the Example section).</blockquote>

<p>Emphasis added by me. If one typically does something, that means you can also <em>not do it</em> :) The <em>throw</em> statement takes an expression as its argument. The convention is to have it be a subclass of <strong>Error</strong>. This post isn't about that. In fact this post is a mental exercise as I don't recommend breaking from that convention, but I'm sure it might get someone's creative juices flowing, as I've not thought of a compelling use case, yet.</p>]]></description>
         <link>http://life.neophi.com/danielr/2008/02/abusing_trycatch_and_throw.html</link>
         <guid>http://life.neophi.com/danielr/2008/02/abusing_trycatch_and_throw.html</guid>
         <category>Flex</category>
         <pubDate>Mon, 18 Feb 2008 13:00:25 -0500</pubDate>
      </item>
            <item>
         <title>Puzzling Proxy Problem: Solved</title>
         <description><![CDATA[<p>The short version is what AS3 operator triggers a call to the <strong>isAttribute()</strong> method of a Proxy? The answer, <em>none</em>. isAttribute() is a utility function provided by Proxy that can be called to determine if the <strong>name</strong> passed to a function was specified as an attribute. A couple of Proxy's methods can't be called in an attribute context, as noted below. I've created a sample Proxy class called MyProxy to help show what's going on:</p><pre class="code"><span class="category4">package</span> com.neophi.test {
    <span class="category1">import</span> flash.utils.Proxy;
    <span class="category1">import</span> flash.utils.flash_proxy;
    
    <span class="category1">public</span> <span class="category1">dynamic</span> <span class="category4">class</span> MyProxy <span class="category1">extends</span> Proxy {
        override flash_proxy <span class="category2">function</span> callProperty(name:*, ... rest):* {
            <span class="category3">trace</span>(<span class="quote">"callProperty"</span>, name, rest);
            flash_proxy::isAttribute(name);
            <span class="category1">return</span> <span class="category1">null</span>;
        }
        
        override flash_proxy <span class="category2">function</span> deleteProperty(name:*):Boolean {
            <span class="category3">trace</span>(<span class="quote">"deleteProperty"</span>, name);
            flash_proxy::isAttribute(name);
            <span class="category1">return</span> <span class="category1">false</span>;
        }
        
        override flash_proxy <span class="category2">function</span> getDescendants(name:*):* {
            <span class="category3">trace</span>(<span class="quote">"getDescendants"</span>, name);
            flash_proxy::isAttribute(name);
            <span class="category1">return</span> <span class="category1">null</span>;
        }
        
        override flash_proxy <span class="category2">function</span> getProperty(name:*):* {
            <span class="category3">trace</span>(<span class="quote">"getProperty"</span>, name);
            flash_proxy::isAttribute(name);
            <span class="category1">return</span> <span class="category1">null</span>;
        }
        
        override flash_proxy <span class="category2">function</span> hasProperty(name:*):Boolean {
            <span class="category3">trace</span>(<span class="quote">"hasProperty"</span>, name);
            flash_proxy::isAttribute(name);
            <span class="category1">return</span> <span class="category1">false</span>;
        }
        
        <span class="linecomment">// Don't override isAttribute(), it is a utility function</span>
        <span class="linecomment">// used by methods that specify a name:* parameter</span>
        <span class="linecomment">// to determine if the name argument was specified as an</span>
        <span class="linecomment">// attribute. It doesn't look like there is any other</span>
        <span class="linecomment">// way to determine if a name was specified as an</span>
        <span class="linecomment">// attribute besides calling Proxy's isAttribute()</span>
        <span class="linecomment">// implementation. </span>
        override flash_proxy <span class="category2">function</span> isAttribute(name:*):Boolean {
            <span class="category5">var</span> result:Boolean = <span class="category1">super</span>.flash_proxy::isAttribute(name);
            <span class="category3">trace</span>(<span class="quote">"isAttribute"</span>, name, result);
            <span class="category1">return</span> result;
        }
        
        override flash_proxy <span class="category2">function</span> nextName(index:int):String {
            <span class="category3">trace</span>(<span class="quote">"nextName"</span>, index);
            <span class="category1">return</span> <span class="category1">null</span>;       
        }
        
        override flash_proxy <span class="category2">function</span> nextNameIndex(index:int):int {
            <span class="category3">trace</span>(<span class="quote">"nextNameIndex"</span>, index);
            <span class="category1">return</span> (1 - index);
        }
        
        override flash_proxy <span class="category2">function</span> nextValue(index:int):* {
            <span class="category3">trace</span>(<span class="quote">"nextValue"</span>, index);
            <span class="category1">return</span> <span class="category1">null</span>;
        }
        
        override flash_proxy <span class="category2">function</span> setProperty(name:*, value:*):<span class="category1">void</span> {
            <span class="category3">trace</span>(<span class="quote">"setProperty"</span>, name, value);
            flash_proxy::isAttribute(name);
        }
    }
}</pre>]]></description>
         <link>http://life.neophi.com/danielr/2008/02/puzzling_proxy_problem.html</link>
         <guid>http://life.neophi.com/danielr/2008/02/puzzling_proxy_problem.html</guid>
         <category>Flex</category>
         <pubDate>Thu, 07 Feb 2008 00:32:57 -0500</pubDate>
      </item>
            <item>
         <title>Truncating labels that use a percentage width</title>
         <description><![CDATA[<p>When an mx:Label is created, truncateToFit is true, and a percentage is specified for its width the label will show all of its content even if placed inside a fixed width container. The following example shows this scenario:</p><pre class="code">&lt;?xml version=<span class="quote">"1.0"</span> encoding=<span class="quote">"utf-8"</span>?&gt;
&lt;mx:Application xmlns:mx=<span class="quote">"http://www.adobe.com/2006/mxml"</span> layout=<span class="quote">"vertical"</span>&gt;
&lt;mx:HBox width=<span class="quote">"100"</span> horizontalScrollPolicy=<span class="quote">"off"</span>&gt;
&lt;mx:Label text=<span class="quote">"This is a really long label"</span> width=<span class="quote">"100%"</span> truncateToFit=<span class="quote">"true"</span>/&gt;
&lt;mx:Button label=<span class="quote">"X"</span>/&gt;
&lt;/mx:HBox&gt;
&lt;/mx:Application&gt;</pre><p></p>

<p>The result is <img src="/danielr/images/long-label.png"/> which is not what I had hoped would happen. </p>]]></description>
         <link>http://life.neophi.com/danielr/2008/01/truncating_labels_that_use_a_p.html</link>
         <guid>http://life.neophi.com/danielr/2008/01/truncating_labels_that_use_a_p.html</guid>
         <category>Flex</category>
         <pubDate>Wed, 09 Jan 2008 16:12:04 -0500</pubDate>
      </item>
      
   </channel>
</rss>
