<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Coding Angry</title>
    <subtitle type="text">Coding Angry:for those momentary bouts of tourettes</subtitle>
    <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/index/" />
    <link rel="self" type="application/atom+xml" href="http://codingangry.com/index.php/site/atom/" />
    <updated>2012-12-19T00:23:45Z</updated>
    <rights>Copyright (c) 2012, Ando</rights>
    <generator uri="http://expressionengine.com/" version="1.6.7">ExpressionEngine</generator>
    <id>tag:codingangry.com,2012:12:19</id>


    <entry>
      <title>Adobe at 30</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/adobe_at_30/" />
      <id>tag:codingangry.com,2012:index.php/site/index/1.54</id>
      <published>2012-12-19T00:15:44Z</published>
      <updated>2012-12-19T00:23:45Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>Here is some deep house and electro swing. This set is from Mist in San Francisco for Adobe&#8217;s 30th anniversary. Sorry, no playlist.</p>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/AdobeAt30.mp3" target="NEW">Download the MP3</a>
</li></ul>

<p>&nbsp;</p>
      ]]></content>
    </entry>

    <entry>
      <title>iOS Gradent with Transparency</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/ios_gradent_with_transparency/" />
      <id>tag:codingangry.com,2012:index.php/site/index/1.53</id>
      <published>2012-10-20T06:15:33Z</published>
      <updated>2012-10-22T22:38:34Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Coding"
        scheme="http://codingangry.com/index.php/site/C5/"
        label="Coding" />
      <content type="html"><![CDATA[
        <p>Developing for iOS has been a blast thus far; its a nice break from Flex and Air. The syntax was a serious hurtle at first but thankfully I am over that now. It is not uncommon for me to receive designs that contain several layers just to pull off a header bar or button skin. That was the case last week when I received a design that had a header bar that was made up of two parts. A background that had an alpha and an additional layer that was an gradient with transparency. I searched far and wide but couldn’t find any iOS examples of gradients with transparency. The lack of examples and my relatively fresh knowledge of Obj-C lead me to creating my own class.</p><P>
<table>
<tr>
<td><img src="http://codingangry.com/demos/alphaGradient/iphoneTop.png" /></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td><img src="http://codingangry.com/demos/alphaGradient/iphoneRight.png" /></td>
</tr>
</table><p>
<BR><br />
You can see examples and more explanation in the <i>Full article&#8230;</i> link below.
</p><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><p>
<input type="hidden" name="cmd" value="_s-xclick"><br />
<input type="hidden" name="hosted_button_id" value="X2ALTK29AQ6J8">
</p><table><tr><td>
<ul><li class="icon source"><a href="http://codingangry.com/demos/alphaGradient/alphaGradient.zip">Download AlphaGradient</a></li></ul>
</td><td>&nbsp;&nbsp;&nbsp;</td><td><p>
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Thank you for your support!"><br />
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</p></td></tr></table>
</form> <p>Developing for iOS has been a blast thus far; its a nice break from Flex and Air. The syntax was a serious hurtle at first but thankfully I am over that now. It is not uncommon for me to receive designs that contain several layers just to pull off a header bar or button skin. That was the case last week when I received a design that had a header bar that was made up of two parts. A background that had an alpha and an additional layer that was an gradient with transparency. I searched far and wide but couldn’t find any iOS examples of gradients with transparency. The lack of examples and my relatively fresh knowledge of Obj-C lead me to creating my own class.</p><P><p>
The AlphaGradient class is extended from UIVIew and has a very simple API. Aside from being a UIView, you can set a color and a direction. The color represents the color of your gradient and the direction is which way the gradient goes. The direction points to the side with the alpha of 1.0. 
</p><P>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post"><p>
<input type="hidden" name="cmd" value="_s-xclick"><br />
<input type="hidden" name="hosted_button_id" value="X2ALTK29AQ6J8">
</p><table><tr><td>
<ul><li class="icon source"><a href="http://codingangry.com/demos/alphaGradient/alphaGradient.zip">Download AlphaGradient</a></li></ul>
</td><td>&nbsp;&nbsp;&nbsp;</td><td><p>
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Thank you for your support!"><br />
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</p></td></tr></table>
</form><p>
In order to achieve a gradient with transparency it is necessary to create a solid color image and apply an image mask. The AlphaGradient class creates the solid color image and the image mask programatically. These are made by drawing into a context and pulling out the resulting images. The code below is the business end of the AlphaGradient class. 
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #007700">-(</span><span style="color: #0000BB">void</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">drawGradient</span><span style="color: #007700">:(</span><span style="color: #0000BB">CGRect</span><span style="color: #007700">)</span><span style="color: #0000BB">rect<br />&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;CGFloat&nbsp;maskColors&#91;&#93;&nbsp;</span><span style="color: #007700">=<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0f</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.0f</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.0f</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.0f</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">1.0f</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.0f</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.0f</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.0f</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Set&nbsp;up&nbsp;the&nbsp;start&nbsp;and&nbsp;end&nbsp;points&nbsp;for&nbsp;the&nbsp;gradient<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#91;self&nbsp;calculateStartAndEndPoints&#93;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Create&nbsp;an&nbsp;image&nbsp;of&nbsp;a&nbsp;solid&nbsp;slab&nbsp;in&nbsp;the&nbsp;desired&nbsp;color<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGRect&nbsp;frame&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">rect</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">width</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">rect</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">height</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">UIGraphicsBeginImageContextWithOptions</span><span style="color: #007700">(</span><span style="color: #0000BB">rect</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">NO</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.0</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGContextRef&nbsp;context&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">UIGraphicsGetCurrentContext</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGContextSetFillColorWithColor</span><span style="color: #007700">(</span><span style="color: #0000BB">context</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#91;self</span><span style="color: #007700">.</span><span style="color: #0000BB">color&nbsp;colorWithAlphaComponent</span><span style="color: #007700">:</span><span style="color: #0000BB">_alpha&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">CGColor</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGContextFillRect</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">UIGraphicsGetCurrentContext</span><span style="color: #007700">(),&nbsp;</span><span style="color: #0000BB">frame</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageRef&nbsp;colorRef&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">UIGraphicsGetImageFromCurrentImageContext</span><span style="color: #007700">().</span><span style="color: #0000BB">CGImage</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Create&nbsp;an&nbsp;image&nbsp;of&nbsp;a&nbsp;gradient&nbsp;from&nbsp;black&nbsp;to&nbsp;white<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGColorSpaceRef&nbsp;rgb&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CGColorSpaceCreateDeviceRGB</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGGradientRef&nbsp;gradientRef&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CGGradientCreateWithColorComponents</span><span style="color: #007700">(</span><span style="color: #0000BB">rgb</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">maskColors</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">maskColors</span><span style="color: #007700">)&nbsp;/&nbsp;(</span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">maskColors&#91;0&#93;</span><span style="color: #007700">)&nbsp;*&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGColorSpaceRelease</span><span style="color: #007700">(</span><span style="color: #0000BB">rgb</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGContextDrawLinearGradient</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">context</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">gradientRef</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">startPoint</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">endPoint</span><span style="color: #007700">,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">kCGGradientDrawsBeforeStartLocation&nbsp;</span><span style="color: #007700">|&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">kCGGradientDrawsAfterEndLocation</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageRef&nbsp;maskRef&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">UIGraphicsGetImageFromCurrentImageContext</span><span style="color: #007700">().</span><span style="color: #0000BB">CGImage</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">UIGraphicsEndImageContext</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Blend&nbsp;the&nbsp;solid&nbsp;image&nbsp;and&nbsp;the&nbsp;gradient&nbsp;to&nbsp;produce&nbsp;the&nbsp;final&nbsp;gradient.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageRef&nbsp;tmpMask&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CGImageMaskCreate</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageGetWidth</span><span style="color: #007700">(</span><span style="color: #0000BB">maskRef</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageGetHeight</span><span style="color: #007700">(</span><span style="color: #0000BB">maskRef</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageGetBitsPerComponent</span><span style="color: #007700">(</span><span style="color: #0000BB">maskRef</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageGetBitsPerPixel</span><span style="color: #007700">(</span><span style="color: #0000BB">maskRef</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageGetBytesPerRow</span><span style="color: #007700">(</span><span style="color: #0000BB">maskRef</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGImageGetDataProvider</span><span style="color: #007700">(</span><span style="color: #0000BB">maskRef</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Draw&nbsp;the&nbsp;resulting&nbsp;mask.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">context&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">UIGraphicsGetCurrentContext</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGContextDrawImage</span><span style="color: #007700">(</span><span style="color: #0000BB">context</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">rect</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CGImageCreateWithMask</span><span style="color: #007700">(</span><span style="color: #0000BB">colorRef</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">tmpMask</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">UIGraphicsEndImageContext</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div><p><BR><br />
Since the AlphaGradient is simply a visual treatment, the user interaction has been turned off. By default the gradient is black and has the direction of GRADIENT_UP. This default configuration has been chosen it behaves like a drop shadow without extra input. The class supports GRADIENT_UP, GRADIENT_DOWN,&nbsp; GRADIENT_LEFT and GRADIENT_RIGHT.</p>

<p>In order to use the AlphaGradient you simply declare and instance, set its frame and optionally set its color and direction. Below are some usage examples to get you on your way:<BR><br />
<img src="http://codingangry.com/demos/alphaGradient/iphoneTop.png" /></p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #FF8000">//TOP<br /></span><span style="color: #0000BB">AlphaGradientView</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">gradient&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;&#91;AlphaGradientView&nbsp;alloc&#93;&nbsp;initWithFrame</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">.</span><span style="color: #0000BB">view</span><span style="color: #007700">.</span><span style="color: #0000BB">frame</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">width</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">150</span><span style="color: #007700">)</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000BB">gradient</span><span style="color: #007700">.</span><span style="color: #0000BB">color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;UIColor&nbsp;purpleColor&#93;</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#91;self</span><span style="color: #007700">.</span><span style="color: #0000BB">view&nbsp;addSubview</span><span style="color: #007700">:</span><span style="color: #0000BB">gradient&#93;</span><span style="color: #007700">;&nbsp;</span>
</span>
</code></div>
<P><p><BR><br />
<img src="http://codingangry.com/demos/alphaGradient/iphoneRight.png" /></p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #FF8000">//&nbsp;RIGHT<br /></span><span style="color: #0000BB">AlphaGradientView</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">gradient&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;&#91;AlphaGradientView&nbsp;alloc&#93;&nbsp;initWithFrame</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(</span><span style="color: #0000BB">self</span><span style="color: #007700">.</span><span style="color: #0000BB">view</span><span style="color: #007700">.</span><span style="color: #0000BB">frame</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">width&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">150</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">150</span><span style="color: #007700">,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">.</span><span style="color: #0000BB">view</span><span style="color: #007700">.</span><span style="color: #0000BB">frame</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">height</span><span style="color: #007700">)</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">gradient</span><span style="color: #007700">.</span><span style="color: #0000BB">color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;UIColor&nbsp;yellowColor&#93;</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">gradient</span><span style="color: #007700">.</span><span style="color: #0000BB">direction&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">GRADIENT_RIGHT</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#91;self</span><span style="color: #007700">.</span><span style="color: #0000BB">view&nbsp;addSubview</span><span style="color: #007700">:</span><span style="color: #0000BB">gradient&#93;</span><span style="color: #007700">;&nbsp;</span>
</span>
</code></div><P><p>
The next sample is super fancy and uses two gradients back to back:</p>

<p><img src="http://codingangry.com/demos/alphaGradient/iphoneCenter.png" /></p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #FF8000">//&nbsp;TWO<br /></span><span style="color: #0000BB">AlphaGradientView</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">gradient&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;&#91;AlphaGradientView&nbsp;alloc&#93;&nbsp;initWithFrame</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">250</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">.</span><span style="color: #0000BB">view</span><span style="color: #007700">.</span><span style="color: #0000BB">frame</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">width</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">50</span><span style="color: #007700">)</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000BB">&#91;self</span><span style="color: #007700">.</span><span style="color: #0000BB">view&nbsp;addSubview</span><span style="color: #007700">:</span><span style="color: #0000BB">gradient&#93;</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">gradient&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;&#91;AlphaGradientView&nbsp;alloc&#93;&nbsp;initWithFrame</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">200</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">.</span><span style="color: #0000BB">view</span><span style="color: #007700">.</span><span style="color: #0000BB">frame</span><span style="color: #007700">.</span><span style="color: #0000BB">size</span><span style="color: #007700">.</span><span style="color: #0000BB">width</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">50</span><span style="color: #007700">)</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">gradient</span><span style="color: #007700">.</span><span style="color: #0000BB">direction&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">GRADIENT_DOWN</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#91;self</span><span style="color: #007700">.</span><span style="color: #0000BB">view&nbsp;addSubview</span><span style="color: #007700">:</span><span style="color: #0000BB">gradient&#93;</span><span style="color: #007700">;&nbsp;</span>
</span>
</code></div><P><p>
Happy Coding!
</p><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><p>
<input type="hidden" name="cmd" value="_s-xclick"><br />
<input type="hidden" name="hosted_button_id" value="X2ALTK29AQ6J8">
</p><table><tr><td>
<ul><li class="icon source"><a href="http://codingangry.com/demos/alphaGradient/alphaGradient.zip">Download AlphaGradient</a></li></ul>
</td><td>&nbsp;&nbsp;&nbsp;</td><td><p>
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Thank you for your support!"><br />
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</p></td></tr></table>
</form>
      ]]></content>
    </entry>

    <entry>
      <title>Image Loader for the iOS simulators</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/image_loader_for_the_ios_simulators/" />
      <id>tag:codingangry.com,2012:index.php/site/index/1.52</id>
      <published>2012-10-05T17:10:37Z</published>
      <updated>2012-10-22T22:39:38Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Coding"
        scheme="http://codingangry.com/index.php/site/C5/"
        label="Coding" />
      <content type="html"><![CDATA[
        <p>As you know, when working on iOS apps, you spend a considerable amount of time in the simulator. If your project deals with the Cameral Roll, you will find that the simulator doesn&#8217;t have any images in it. In the past I have done all my development on a device. This was slow and inefficient. I wrote a simple little app to populate the Camera Roll of the iPhone and iPad simulators. </p>

<p>There are complete instructions in the <i>Full article&#8230;</i> link below.
</p><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><p>
<input type="hidden" name="cmd" value="_s-xclick"><br />
<input type="hidden" name="hosted_button_id" value="X2ALTK29AQ6J8">
</p><table><tr><td>
<ul><li class="icon source"><a href="http://codingangry.com/demos/imageLoader/imageLoader.zip">Download the project</a></li></ul>
</td><td>&nbsp;&nbsp;&nbsp;</td><td><p>
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Thank you for your support!"><br />
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</p></td></tr></table>
</form><p>
Happy Coding!
</p> <p>As you know, when working on iOS apps, you spend a considerable amount of time in the simulator. If your project deals with the Cameral Roll, you will find that the simulator doesn&#8217;t have any images in it. In the past I have done all my development on a device. This was slow and inefficient. I wrote a simple little app to populate the Camera Roll of the iPhone and iPad simulators.</p>

<p>If you have suggestions or bug fixes, please let me know.&nbsp; </p>

<p>To use the Image Loader follow these steps:
</p><ol>
<li>Download the project from below and unzip it.</li>
<li>Open : ImageLoader.xcodeproj</li>
<li>Made a folder on your desktop and name it <i>img</i>.</li>
<li>Fill the folder with <i>jpg</i> files.</li>
<li>Drag the <i>img</i> folder into the <i>imageLoader</i> folder in xcode.
<br><br><img src="http://codingangry.com/demos/imageLoader/fileTree.png"/><br><br>
</li>
<li>Be sure to select <i>Copy items into desti&#8230;</i><br>
and to select <i>Create folder refer&#8230;</i><br>
<br><br><img src="http://codingangry.com/demos/imageLoader/dialog.png"/><br><br>
</li>
<li>Run the app and press the <i>Import Images</i> button</li>
</ol><p> 
</p><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><p>
<input type="hidden" name="cmd" value="_s-xclick"><br />
<input type="hidden" name="hosted_button_id" value="X2ALTK29AQ6J8">
</p><table><tr><td>
<ul><li class="icon source"><a href="http://codingangry.com/demos/imageLoader/imageLoader.zip">Download the project</a></li></ul>
</td><td>&nbsp;&nbsp;&nbsp;</td><td><p>
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Thank you for your support!"><br />
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</p></td></tr></table>
</form><p>
Happy Coding!</p>


      ]]></content>
    </entry>

    <entry>
      <title>What fonts are available in iOS?</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/what_fonts_are_available_in_ios/" />
      <id>tag:codingangry.com,2012:index.php/site/index/1.51</id>
      <published>2012-10-05T16:28:50Z</published>
      <updated>2012-10-05T17:09:51Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Coding"
        scheme="http://codingangry.com/index.php/site/C5/"
        label="Coding" />
      <content type="html"><![CDATA[
        <p>If you are like me, you are getting tired of using <i>System Font</i> and <i>System Font Bold</i> in your iOS apps. The other day I saw the <a href="http://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIFont_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006891-CH4-SW5" target="new">familyNames</a> field on the UIFont class. It returns an NSArray so I decided to dump the contents to the terminal. Click &#8216;Full Article&#8230;&#8217; to see the complete list. I was really happy to see <i>Helvetica Neue</i> in the lineup. </p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">myLabel&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;UILabel&nbsp;new&#93;</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">myLabel</span><span style="color: #007700">.</span><span style="color: #0000BB">frame&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">300</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">myLabel</span><span style="color: #007700">.</span><span style="color: #0000BB">font&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;UIFont&nbsp;fontWithName</span><span style="color: #007700">:@</span><span style="color: #DD0000">"Baskerville"&nbsp;</span><span style="color: #0000BB">size</span><span style="color: #007700">:</span><span style="color: #0000BB">12&#93;</span><span style="color: #007700">;&nbsp;</span>
</span>
</code></div>

<p><br />
Happy coding!
</p> <p>If you are like me, you are getting tired of using <i>System Font</i> and <i>System Font Bold</i> in your iOS apps. The other day I saw the <a href="http://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIFont_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006891-CH4-SW5" target="new">familyNames</a> field on the UIFont class. It returns an NSArray so I decided to dump the contents to the terminal. Below is what came out. In addition to <a href="http://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIFont_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006891-CH4-SW5" target="new">familyNames</a> you can call <a href="http://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIFont_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006891-CH4-SW1" target="new">fontNamesForFamilyName</a> to get a listing of names available for a specific font family. All you need to do is put the name of choice in the <a href="http://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIFont_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006891-CH4-SW2" target="new">fontWithName:size</a> method. I was really happy to see <i>Helvetica Neue</i> in that list. </p>

<p>
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">myLabel&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;UILabel&nbsp;new&#93;</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">myLabel</span><span style="color: #007700">.</span><span style="color: #0000BB">frame&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CGRectMake</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">300</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">myLabel</span><span style="color: #007700">.</span><span style="color: #0000BB">font&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#91;UIFont&nbsp;fontWithName</span><span style="color: #007700">:@</span><span style="color: #DD0000">"Baskerville"&nbsp;</span><span style="color: #0000BB">size</span><span style="color: #007700">:</span><span style="color: #0000BB">12&#93;</span><span style="color: #007700">;&nbsp;</span>
</span>
</code></div>

<p><br />
Happy coding!
</p><UL>
<li>Academy Engraved LET</li>
<li>American Typewriter</li>
<li>Apple Color Emoji</li>
<li>Apple SD Gothic Neo</li>
<li>Arial</li>
<li>Arial Hebrew</li>
<li>Arial Rounded MT Bold</li>
<li>Avenir</li>
<li>Avenir Next</li>
<li>Avenir Next Condensed</li>
<li>Bangla Sangam MN</li>
<li>Bodoni 72</li>
<li>Baskerville</li>
<li>Bodoni 72 Smallcaps</li>
<li>Bodoni 72 Oldstyle</li>
<li>Bodoni Ornaments</li>
<li>Bradley Hand</li>
<li>Chalkboard SE</li>
<li>Chalkduster</li>
<li>Cochin</li>
<li>Copperplate</li>
<li>Courier</li>
<li>Courier New</li>
<li>Devanagari Sangam MN</li>
<li>Didot</li>
<li>Euphemia UCAS</li>
<li>Futura</li>
<li>Geeza Pro</li>
<li>Georgia</li>
<li>Gill Sans</li>
<li>Gujarati Sangam MN</li>
<li>Gurmukhi MN</li>
<li>Heiti SC</li>
<li>Heiti TC</li>
<li>Helvetica</li>
<li>Helvetica Neue</li>
<li>Hiragino Kaku Gothic ProN</li>
<li>Hiragino Mincho ProN</li>
<li>Hoefler Text</li>
<li>Kailasa</li>
<li>Kannada Sangam MN</li>
<li>Malayalam Sangam MN</li>
<li>Marion</li>
<li>Marker Felt</li>
<li>Noteworthy</li>
<li>Optima</li>
<li>Oriya Sangam MN</li>
<li>Palatino</li>
<li>Papyrus</li>
<li>Party LET</li>
<li>Trebuchet MS</li>
<li>Sinhala Sangam MN</li>
<li>Snell Roundhand</li>
<li>Symbol</li>
<li>Tamil Sangam MN</li>
<li>Telugu Sangam MN</li>
<li>Thonburi</li>
<li>Times New Roman</li>
<li>Verdana</li>
<li>Zapfino</li>
<li>Zapf Dingbats</li>
</UL>

<p>&nbsp;</p>
      ]]></content>
    </entry>

    <entry>
      <title>Street Food</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/street_food/" />
      <id>tag:codingangry.com,2012:index.php/site/index/1.50</id>
      <published>2012-09-19T23:10:53Z</published>
      <updated>2012-09-19T23:11:54Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>Playing some funk to a food truck chow down. Sorry no playlist.</p>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/StreetFood.mp3" target="NEW">Download the MP3</a>
</li></ul>

<p>&nbsp;</p>
      ]]></content>
    </entry>

    <entry>
      <title>Night Time Off</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/night_time_off/" />
      <id>tag:codingangry.com,2012:index.php/site/index/1.49</id>
      <published>2012-03-29T23:55:38Z</published>
      <updated>2012-03-30T00:00:39Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>This set was played the last weekend of my sabbatical. It was amazing having the time off. </p>

<ol>
<li>Foggy - Original Mix - The Fix</li>
<li>Revelation (2011 Mix) - Alexi Delano, Cari Lekebusch</li>
<li>Fulmine - Original Mix - Slymex</li>
<li>Wubb Die Klick Die - Harry Axt Remix - Timo Jahns</li>
<li>The Chosen Two - The Concert (Original Mix)</li>
<li>Free Your Mind - Piet Pulani Remix - Vladimir Corbin</li>
<li>Anubis - Original Mix - Pleasurekraft</li>
<li>Deep Throat (Original Mix) - Claude Von Stroke</li>
<li>Slip Box (Original Mix) 1 - Lowboys</li>
<li>Satyr Song - Original Mix - Pleasurekraft</li>
<li>Egypt - Hostage Remix - Slap In The Bass</li>
<li>Ginger Ale - Oliver $</li>
<li>Carney - Original Mix - Pleasurekraft</li>
<li>Blame - Tom Budden&#8217;s Alive Remix - James Zabiela</li>
<li>Spells - DJ Slider Remix - Jake Childs, Ksky</li>
<li>Speechless (Gesaffelstein Remix) - Agoria, Carl Craig, La Scalars</li>
<li>Kalemba (wegue wegue) (affani Bootleg Mix) - Buraka Som Sistema</li>
<li>LizA - Twinpitch Remix - Vincent Vega, Timo Di Roy</li>
<li>Drum Dance (Dub Mix) - DJ Soulstar</li>
<li>Rocket Ride - Soulwax Rock It Right Mix - Felix Da Housecat</li>
<li>Till tonight feat jonathan mendelsohn (chris kaeser remix) - laidback luke</li>
<li>Nexus (Foamo Dub Mix) - Carl Cox</li>
<li>Drunky KItty - Electric Soulside Remix - Stama</li>
<li>City Life feat. Cari Golden - Maceo Plex Remix - DJ T</li>
</ol>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/Migrations3.mp3" target="NEW">Download the MP3</a>
</li></ul>

<p>&nbsp;</p>
      ]]></content>
    </entry>

    <entry>
      <title>The Last 10% &#45; Metronomes</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/the_last_10_percent/" />
      <id>tag:codingangry.com,2011:index.php/site/index/1.47</id>
      <published>2011-11-07T20:02:27Z</published>
      <updated>2011-12-12T18:35:28Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Misc"
        scheme="http://codingangry.com/index.php/site/C12/"
        label="Misc" />
      <content type="html"><![CDATA[
        <P><img src="http://codingangry.com/images/uploads/tick/smFinished.jpg" height="150" style="float:left;margin:0 10px 5px 0;"/> Everybody has ideas and everybody has a side project. Anyone can tell you their idea, most people can start a project, but its the smaller group who actually finish what they started. This is the group who’s work I appreciate and who I strive to be a part of. Over the course of my life I keep finding that the last 10% of a project is ALWAYS the hardest. Its that last bit of polish and love that is the most tedious. A wise man once told me that you should never talk about a project you are going to build. The mere act of talking about it is creatively rewarding enough to prevent you from starting it. I find that when thinking of projects, I focus on one key portion of the project and loose track of the big picture. Once that key component is complete, my creative mind is onto the next project. The problem is, that the original project is not finished. If you were to put an engine in a frame, sure it’s a car, but it’s not a car you want to drive in the rain and therefore not finished. Using my current project I can illustrate how much of the actual work lies outside the initial core concept.</P><p>
<A href="http://youtu.be/0UZpubA4_7E" target="_blank">Watch the video</a>
</p> <p>Everybody has ideas and everybody has a side project. Anyone can tell you their idea, most people can start a project, but its the smaller group who actually finish what they started. This is the group who’s work I appreciate and who I strive to be a part of. Over the course of my life I keep finding that the last 10% of a project is ALWAYS the hardest. Its that last bit of polish and love that is the most tedious. A wise man once told me that you should never talk about a project you are going to build. The mere act of talking about it is creatively rewarding enough to prevent you from starting it. I find that when thinking of projects, I focus on one key portion of the project and loose track of the big picture. Once that key component is complete, my creative mind is onto the next project. The problem is, that the original project is not finished. If you were to put an engine in a frame, sure it’s a car, but it’s not a car you want to drive in the rain and therefore not finished. Using my current project I can illustrate how much of the actual work lies outside the initial core concept.
</p><P><p>
<A href="http://youtu.be/0UZpubA4_7E" target="_blank">Watch the video</a>
</p><P><p>
When it comes to sculpture, I feel the cool happens when an object is taken completely out of context or is unable to complete the task it was originally intended. The example project is a Ticker Box. The Ticker Box, as you will soon learn, is an exercise in futility. The thing has no meaningful use.&nbsp; However, in groups they seem to interact with each other and feel like they are alive.
</p><P><p>
Recently I visited a garage sale where an item caught my eye. It was a long box with six dials on the front. It looked to be some sort of power supply that could be dialed into various, accurate voltages. The thing didn&#8217;t really have any &#8220;buy me&#8221; draw until I turned one of the knobs. The knobs looked like they came from an old oven and would click into position. The tactile feel was very compelling and totally sold me. Here I am with yet another piece of useless obtanium which I have no immediate plans to use. This is where the first step to finishing what you start comes in; you can either start building something immediately, or put it on the shelf for another day. There is only one right answer here. Otherwise, you shouldn&#8217;t have bought the thing in the first place. It&#8217;s time for a new project, which is going to be based on these knobs.
</p><P><p>
In the past I have built a few micro controller based projects. Micro controllers (like the <a href="http://www.arduino.cc" target="_blank">Arduino</a>) make projects easy because your circuitry can be minimal and the behavior (where the complexity lives) is coded in software.&nbsp; For this project I decided that it was time to learn something new and get more serious about analogue circuitry. Analogue circuitry is a bit more complex and less flexible than using a micro controller. Instead of being able to reprogram your item, you have to use hardware to determine behavior. The simplest integrated circuit I know about is the 555 timer chip. Having never used one I knew there was going to be a bit of a learning curve. I had lots of dials and a timer; why not have the dial control the speed of the timer? Turns out that wasn&#8217;t as easy as it sounded, which was the impetus to write this article. In theory I would end up with an adjustable timer, but no clear application for it. What is this timer going to do?
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/sm555.jpg"/><img src="http://codingangry.com/images/uploads/tick/smRelay.jpg"/><br><br />
Above is a 555 timer chip and an electromechanical relay.
</p><P><p>
Ever since I started playing with electronics, I have had an affinity for old clunky electromechanical relays.&nbsp; Relays are basically electronic switches, controlled by an input voltage. The adjustable timer will trigger the relay on and off. The relay isn&#8217;t connected to anything - thus, the exercise in futility. However, the relay does open and close, which creates a nice electromechanical action in response to the timer input. Now I had all the parts needed to get the project started.
</p><P><p>
The first step was to figure out how to wire up the 555 timer chip so that it put out an intermittent signal. The next step was to augment that circuit to incorporate the knobs. Turns out that the way to adjust the ticking speed of the 555 was to adjust the resistance in a portion of the circuit. I collected a bunch of resistors that had different ratings, each of which had an effect on the 555&#8217;s timing. I soldered 10 different resistors to each of the dial&#8217;s 10 positions. That was it, I was using dials to adjust the speed of a timer. Done!
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smProto.jpg"/><br><br />
Above is an image of the completed circuit on a proto board.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smSingleBrain.png"/><br><br />
Above is an image of the technical parts going into each Ticker Box.
</p><P><p>
Up to this point, the project was somewhat straightforward. With 555 ticking away, it was time to make the ticks turn the relay on and off. The rabbit hole got a little deeper here, because the 555 circuitry is 12 volts DC (from a battery) and the electromechanical relay is 110 volts AC. This is where a solid state relay came in. The solid state relay is controlled by 1.2 volts, but switches a 110 volt circuit. The project got even more complicated, because the 1.2 volt control is ten times less than the 12 volts of the 555 chip. After a week of research, I found that Zener Diodes (yeah, they are real) can be used to reduce voltage. The circuit was done! Oh wait - all this was done on a proto board, so it still had to be finalized with solder.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smBrains.jpg"/><br><br />
Above is a detail shot of the custom circuit board.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smSingleGuts.jpg"/><br><br />
Above is the completed content of a Ticker Box: power supply, custom circuit board, solid state relay, dial with resistors and the electromechanical relay.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smSixBrains.jpg"/><br><br />
As with everything in this project I will be doing it six times.
</p><P><p>
As you can see, wiring up the 555 and getting it to do what it&#8217;s supposed to do took a little more work than one would anticipate. I added an LED into the mix, in an effort to add some ground effects when the electromechanical relay is being triggered. Additionally, the circuit needed a power transformer. I found a wall-plug to car-socket conversion was cost effective and compact. Did I mention that I was making 6 of these things? The end game for me was to have these Ticker boxes for sale in <a href="http://www.etsy.com/shop/Phando" target="_blank">my Etsy shop</a>. One for each knob.&nbsp; With the circuits done I thought, phew, that was a serious project. Wait a sec, what do they go in?
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smPower.jpg"/><br><br />
Above is where the 110 volt to 12 volt power is coming from. I am only using the circuitry from the inside the black casing.
</p><P><p>
Next, it was time to head to the shop and fabricate some housings for these things. I chose to make 3&#8221; by 3&#8221; by 3&#8221; steel boxes. As with most metal projects, the bulk of the work was in the metal preparation. This portion of the project was more straight forward than the circuitry part, but was more important.&nbsp; They needed to be durable, and the box provided the feel for the whole project. It&#8217;s more work, but I really like using custom enclosures. If someone recognizes the enclosure you put your project in, they immediately think of Radio Shack (project boxes) or a Safeway checkout line (Altoids containers).
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smPrep.jpg"/><br><br />
You cant work with rusty steel so it all has to be hit with the wire brush.
</p><P>
<P><p>
<img src="http://codingangry.com/images/uploads/tick/smParts.jpg"/><br><br />
Once the metal was prepped, it was time to make tops and bottoms.
</p><P><p>
I had to machine the tops to accept the electromechanical relays and let light shine though. To each box, I added mounting points to the inside, and drilled holes for the dial and the power cord. I also made the bottoms easily removable.&nbsp; Lastly, the things needed to be primed and painted. Power coating is my new favorite, but it was cost prohibitive for this project.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smClamped.jpg"/><br><br />
Prior to welding, the enclosures were clamped into place. Things tend to shift a bit as the steel cools after welding.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smWelded.jpg"/><br><br />
Above is an enclosure with its top welded on.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smSixWelded.jpg"/><br><br />
Each time I finished a step on the first one, I had five more to do.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smGroundEdges.jpg"/><br><br />
Cleaned up the edges a bit.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smMillTop.jpg"/><br><br />
A freshly cut rectangle in the top. 
</p><P><p>
In order for LED to illuminate the plastic under the relay, there needed be a place for the light to pass through. A 1&#8221; by 1.5&#8221; rectangle does just that. I chose to use a shape wizard on the milling machine for this operation. I let the program run in the air above the box to ensure everything was going to run correctly. After that I ran the same rectangle cut program on each of the six boxes. You can see a short video of the milling on <a href="http://youtu.be/fKoJZZES9Oo" target="_blank">YouTube</a>.
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smTopFinished.jpg"/><br><br />
A finished top, with a light hole, two mounting and two holes for wiring. 
</p><P><p>
Ideally the next step would have been incorporated into the previous program for the mill. Since I was mounting the same relay on each box, the bolt patterns were all the same. I wrote a simple program for the mill that moved the head above each hole to be drilled. I installed each box into the mill and started the program. The drill would stop above each hole and I would manually drill it out. This was a serious time saver and something I will be doing more in the future. I can&#8217;t count the times I have messed up a project because I missed the placement of the mounting holes. 
</p><P><p> <br />
<img src="http://codingangry.com/images/uploads/tick/smBotBolts.jpg"/><br><br />
Welded nuts that hold the bottom. 
</p><P><p>
In order to service and install the electrical components, the housings needed to have removable bottoms. I welded nuts to the inside bottom walls of the housings. The four corners of each bottom panel were drilled out in order to accommodate the bolts corresponding to the nuts.&nbsp; Once the welding process began it became clear that four welded nuts with bolts was overkill. Only two nuts were welded to the housing walls. The other two nuts were welded to the backside of the bottom panel. 
</p><P><p>
The dials required two holes to mount; one for the dial shaft and another to prevent the dial from twisting. In addition to the two holes on the front, there needed to be a hole in the back for the power cord. This part of the project wasn’t too difficult, just time consuming. With all the holes drilled and cleaned up, all the fabrication was complete.
</p><P><p>
The bases were painted black. The sides received several coats of clear. 
</p><P><p>
<img src="http://codingangry.com/images/uploads/tick/smBotParts.jpg"/><br><br />
<img height="400" src="http://codingangry.com/images/uploads/tick/smFinished.jpg"/><br><br />
DONE! 
</p><P><p>
As this wore on, I realized that the crux of this project, or the proof of concept, was achieved ages ago.&nbsp; The work went on and on after that, since the &#8216;productizing&#8217; of the concept proved to be where the bulk of labor was. With the main challenge solved, I was tempted to give up at each step along the way, but that&#8217;s not my style. It was a long road but now I am done and loving these little things. </p>

<p>Joe</p>


      ]]></content>
    </entry>

    <entry>
      <title>Moombathon Afternoon</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/moombathon_afternoon/" />
      <id>tag:codingangry.com,2011:index.php/site/index/1.46</id>
      <published>2011-09-09T21:22:42Z</published>
      <updated>2011-09-09T21:36:43Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>This was my 1st Moombathon set. It was spun at the Duckpond - Burningman 2011. I thought it was too slow to dance to, but the floor got dirty. Enjoy</p>

<ol>
<li>Working out is overrated - Don Diablo vs Missy Elliot</li>
<li>Freaky Moombah Fucka (Sabbo Edit) - Moodymann</li>
<li>Horsey - Original Mix - Diplo</li>
<li>Isa GT (Cocotaxi rmx - Un Mono Azul Moombathon) - Pela&#8217;O</li>
<li>Usher ft. Lil Jon &amp; Ludacris- Yeah (Moombathon Remix) - DJ Chai</li>
<li>Digital Animal - Honey Claws</li>
<li>Sazon Booya - Sucia Bailar</li>
<li>Que Que Feat. Maluca (Torro Torro Remix) - Dillon Francis &amp; Diplo</li>
</ol>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/moombathonAfternoon.mp3" target="NEW">Download the MP3</a>
</li></ul>
      ]]></content>
    </entry>

    <entry>
      <title>Happy Hour At 800 Larkin</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/happy_hour_at_800_larkin/" />
      <id>tag:codingangry.com,2011:index.php/site/index/1.45</id>
      <published>2011-06-20T22:40:08Z</published>
      <updated>2011-06-20T22:44:10Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>This was a fun night playing at 800 Larkin in San Francisco. Enjoy</p>

<ol>
<li>I remember - Deadmau5 &amp; Kaskade</li>
<li>Sofa King (Mark Mendes&#8217; Starter Remix) - John Acquaviva, Olivier Giacomotto</li>
<li>Agua Ardiente - Christian Malloni</li>
<li>R.Y.A.N.L. (Pleasurekraft Remix) - Sander Kleinenberg</li>
<li>Sweet Dreams (Avicii Swede Dreams Mix) - Avicii</li>
<li>The King of Pop - DJ Flave</li>
<li>Somebody To Love  (Moonbootica Remix) - Boogie Pimps</li>
<li>Carny - Pleasurekraft</li>
<li>Sex Sax (Bart B More Remix) - Drop The Lime</li>
<li>Brazilian Beat - Biskvit</li>
<li>Body Language (Samples Remix) - Booka Shade</li>
</ol>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/HappyHourAt800Larkin.mp3" target="NEW">Download the MP3</a>
</li></ul>
      ]]></content>
    </entry>

    <entry>
      <title>Deep Grooves on a Tues</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/deep_grooves_on_a_tues/" />
      <id>tag:codingangry.com,2010:index.php/site/index/1.44</id>
      <published>2010-12-08T22:00:56Z</published>
      <updated>2010-12-08T22:12:58Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>Just a Tuesday night at Mars&#8230; <br />
It was my 2nd night out with the new S4 and putting her through her paces. This set is deep and groovy. </p>

<p>Enjoy</p>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/deepTuesday.mp3" target="NEW">Download the MP3</a>
</li></ul>
      ]]></content>
    </entry>

    <entry>
      <title>Ambiturner</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/ambiturner/" />
      <id>tag:codingangry.com,2010:index.php/site/index/1.42</id>
      <published>2010-05-13T08:13:01Z</published>
      <updated>2010-05-14T23:50:02Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>This set is borderline ambient. There are enough beats to keep it interesting and enough quite to keep you wanting more. Enjoy</p>

<ol>
<li>Inidimman - Martin Jarl feat. Jon Ericsson</li>
<li>Hymnal AYA (Featuring Rigzin) - Random Rab</li>
<li>Megamix - Tranquility Bass</li>
<li>Prophetic Sines - Bluetech</li>
<li>Five Lines - Asura</li>
<li>Submerged - Carbon Based Lifeforms</li>
<li>Star Peace - The Peaking Goddess Collective</li>
<li>Dissolving Time - H.U.V.A. Network</li>
<li>Oxyd - Aes Dana</li>
<li>Dragons Mist - Desert Dwellers</li>
<li>Parallel Life - The Starseeds</li>
<li>Solar Prayers - Desert Dwellers</li>
<li>Quintessence - Ooze</li>
<li>Skin As Soft As Moonlight - Makyo</li>
<li>Arc-En-Ciel - Drift</li>
</ol>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/Ambiturner.mp3" target="NEW">Download the MP3</a>
</li></ul>
      ]]></content>
    </entry>

    <entry>
      <title>Flashbuilder 4 Data Services ( ZendAMF / PHP )</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/ZendAMFTutorial/" />
      <id>tag:codingangry.com,2010:index.php/site/index/1.39</id>
      <published>2010-01-20T08:47:28Z</published>
      <updated>2012-12-06T00:15:29Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Coding"
        scheme="http://codingangry.com/index.php/site/C5/"
        label="Coding" />
      <content type="html"><![CDATA[
        <p>Welcome to the brave new world of Flashbuilder 4 (previously known as Flexbuilder). Flashbuilder 4 has some very cool new features; this tutorial is going to cover the PHP portion of the new Data Services tab. Under the hood this feature is using the RemoteObject tag. Remoting is implemented using Action Message Format (<a href="http://en.wikipedia.org/wiki/AMF" target="_new">AMF</a>). This is a a binary format to move data between Flash and the back end. Flashbuilder uses <a href="http://framework.zend.com/manual/en/zend.amf.html " target="_new">ZendAMF</a> to get this job done. There are several advantages to using ZendAMF; it works over port 80, its PHP based and best of all it’s FREE. Due to these facts, this framework will run on almost any web server without the need for Java or special port exceptions. This tutorial is going to cover how to set up a Flex project that is integrated with a PHP server, then it will cover how to configure AMF services and finally how to use them.<br /><br />
</p><ul><li class="icon source">
<a href="http://codingangry.com/demos/ZendAMF/srcview" target="NEW">View The Source</a> 
</li>
<li class="icon example">
<a href="http://codingangry.com/demos/ZendAMF" target="NEW">View The Example</a> 
</li>
</ul><p>
<br />
</p> <p>Welcome to the brave new world of Flashbuilder 4 (previously known as Flexbuilder). Flashbuilder 4 has some very cool new features; this tutorial is going to cover the PHP portion of the new Data Services tab. Under the hood this feature is using the RemoteObject tag. Remoting is implemented using Action Message Format (<a href="http://en.wikipedia.org/wiki/AMF" target="_new">AMF</a>). This is a a binary format to move data between Flash and the back end. Flashbuilder uses <a href="http://framework.zend.com/manual/en/zend.amf.html " target="_new">ZendAMF</a> to get this job done. There are several advantages to using ZendAMF; it works over port 80, its PHP based and best of all it’s FREE. Due to these facts, this framework will run on almost any web server without the need for Java or special port exceptions. This tutorial is going to cover how to set up a Flex project that is integrated with a PHP server, then it will cover how to configure AMF services and finally how to use them.<br /><br />
</p><ul><li class="icon source">
<a href="http://codingangry.com/demos/ZendAMF/srcview" target="NEW">View The Source</a> 
</li>
<li class="icon download">
<a href="http://codingangry.com/demos/ZendAMF/serverFiles.zip" target="NEW">Downlod Server Files</a> 
</li>
<li class="icon example">
<a href="http://codingangry.com/demos/ZendAMF" target="NEW">View The Example</a> 
</li>
</ul><p>
<br />&nbsp; <br />
<b>Setup:</b></p><ol>
<li>If you haven&#8217;t done so already download Flashbuilder 4 from <a href="http://labs.adobe.com/technologies/flashbuilder4" target="_new">Adobe Labs</a></li>
<li>You will need a local web server that runs PHP ( sorry I am not going cover this )</li>
<li>Download the server files from above</li>
<li>Move the _service directory to the root of your web server (trust me just move it)</li>
<li>Optional, you can use a database, my example code is for MySQL available from <a href="http://dev.mysql.com/downloads/mysql" target="_new">here</a></li>
</ol><p>
At this point you should have at least, a local web server running PHP, the _service directory is in the server root and Flashbuilder 4 installed. Lets get started by making a new project.
</p><ol>
<li>choose File -> New -> Other&#8230;</li>
<li>Choose Flex Project</li>
<li>Click &#8216;Next&#8217;</li>
</ol><p>
<img src="http://codingangry.com/demos/ZendAMF/shots/01_newProject.png" width="527" height="502"><br />
</p><ol>
<li>Name your project ( I chose ZendAMF )</li>
<li>You can choose Web (Flex) or Desktop (AIR) it doesn’t matter</li>
<li>Select PHP for server type<br />
<li>Click &#8216;Next&#8217;</li>
</ol><p>
<img src="http://codingangry.com/demos/ZendAMF/shots/02_newProject.png" width="556" height="717"><br />
<br /><br />
Now its time to let Flashbuilder know about your server installation.<br />
</p><ol>
<li>Enter the location of your web root</li>
<li>Enter the root URL to your web server that maps to the path from above</li>
<li>Enter the location you want to be the output for this project</li>
<li>Click &#8216;Validate Configuration&#8217;</li>
</ol><p>
<img src="http://codingangry.com/demos/ZendAMF/shots/03_newProject.png" width="538" height="439"><br /><br />
If everything went well you will see &quot;The web root folder and root URL are valid&quot;.
</p><ol><li>Click &#8216;Finish&#8217;</li></ol><p>
<img src="http://codingangry.com/demos/ZendAMF/shots/04_newProject.png" width="533" height="444"><br /><br />
Now you should be looking at your new application in the Flash Perspective. It should look something like this:<br />
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?xml&nbsp;version</span><span style="color: #007700">=</span><span style="color: #DD0000">"1.0"&nbsp;</span><span style="color: #0000BB">encoding</span><span style="color: #007700">=</span><span style="color: #DD0000">"utf-8"</span><span style="color: #0000BB">?&gt;<br /></span><span style="color: #007700">&lt;</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">WindowedApplication&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: #007700">:</span><span style="color: #0000BB">fx</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://ns.adobe.com/mxml/2009"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">xmlns</span><span style="color: #007700">:</span><span style="color: #0000BB">s</span><span style="color: #007700">=</span><span style="color: #DD0000">"library://ns.adobe.com/flex/spark"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">xmlns</span><span style="color: #007700">:</span><span style="color: #0000BB">mx</span><span style="color: #007700">=</span><span style="color: #DD0000">"library://ns.adobe.com/flex/halo"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">fx</span><span style="color: #007700">:</span><span style="color: #0000BB">Declarations</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;</span><span style="color: #0000BB">Place&nbsp;non</span><span style="color: #007700">-</span><span style="color: #0000BB">visual&nbsp;elements&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">e</span><span style="color: #007700">.</span><span style="color: #0000BB">g</span><span style="color: #007700">.,&nbsp;</span><span style="color: #0000BB">services</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">value&nbsp;objects</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">here&nbsp;</span><span style="color: #007700">--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">fx</span><span style="color: #007700">:</span><span style="color: #0000BB">Declarations</span><span style="color: #007700">&gt;<br /><br />&lt;/</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">WindowedApplication</span><span style="color: #007700">&gt;&nbsp;</span>
</span>
</code></div><p> <br /><br />
If you look to your right you will see the new Data Services tab. Now that we have a project lets start the cool part of this tutorial. This is when Flashbuilder 4 will show you the real magic. Click &#8216;Connect to Data/Service&#8217; to begin.<br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/05_dataServiceTab.png" width="335" height="166"><br /><br />
As I said before we are going to be exploring the PHP portion of this feature so choose PHP and click &#8216;Next&#8217;. I am hoping to cover the HTTP and WSDL portions in future tutorials.<br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/06_dataService.png" width="503" height="422"><br />
</p><ol>
<li>Enter the location of your _service/ZendAMFService.php</li>
<li>You may choose any name for the service, but I like to keep the default.</li>
<li>Service package, this is where the classes that Flashbuilder creates will wind up. That&#8217;s right, Flashbuilder is going to be writing your code for you. I like to keep all the generated code under my codingAngry (ca) package.</li>
<li>Data type package, as with the Service package, this is where your value objects will wind up. Again, I like this in my ca package.</li>
<li>Click &#8216;Finish&#8217;</li>
</ol><p>
<img src="http://codingangry.com/demos/ZendAMF/shots/07_dataService.png" width="499" height="426"><br /><br />
If you do not have the Zend Framework installed you will see the following dialogue. Choose &#8216;OK&#8217; and the Zend Framework will be installed at your web root in a folder called ZendFramework. I would suggest you let this step complete then download the latest Zend Framework from here ( <a href="http://framework.zend.com/download/current">http://framework.zend.com/download/current</a> ) and replace it with what Flashbuilder installed. <br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/08_dataService.png" width="516" height="244"><br /><br />
Whoa, is that what I think it is? Flashbuilder just went out to the service and found out what commands are available. This is a simple CRUD script to act upon Track objects. The only functions we are going to use in this tutorial will be getTrack and getTrackList. These services have been hard coded to return data without a database. There are stubs in all the services for database interaction, but you will have had to run the sql script and get your database set up in order to use those. <br />
</p><ol><li>Choose &#8216;Finish&#8217;</li></ol><p>
<img src="http://codingangry.com/demos/ZendAMF/shots/09_dataService.png" width="445" height="301"><br /><br />
The Data Service tab now shows the services available from your server. Now we need to configure the input and return typed for this services.<br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/10_dataServiceIncomplete.png" width="335" height="166"><br />
</p><ol>
<li>Right click on getTrack and select &#8216;Configure Input Types&#8230;&#8217;</li>
<li>Select &#8216;Number&#8217;</li>
<li>Click &#8216;OK&#8217;</li>
</ol>
<ol>
<li>Right click on getTrack and select &#8216;Configure Return Types&#8230;&#8217;</li>
<li>Select &#8216;Auto-detect the return type from sample data&#8217;</li>
<li>Click &#8216;Next&#8217;</li>
<li>Enter an arbitrary number for the trackId try 15</li>
<li>Click &#8216;Next&#8217;</li>
</ol><p>
Flashbuilder just called the service and determined the return type to be a Track with the following parameters.<br /><br />
You can optionally rename the fields, but I tend to leave them alone.<br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/11_returnType.png" width="426" height="523"><br />
</p><ol><li>Click &#8216;Finish&#8217;</li></ol><p>
You can open up the Data Types and see Track with all its properties.<br /><br />
You can open up the getTrack service and see its input and return values.<br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/12_getTrackDetail.png" width="335" height="438"><br /><br />
You can continue to right click and fill in the values for the rest of the services so they match the configuration below. Be forewarned that only getTrack and getTrackList will work at this point, so they are the only two that you can use Auto-detect for. <br /><br />
<img src="http://codingangry.com/demos/ZendAMF/shots/13_dataServiceComplete.png" width="335" height="166"><br /><br />
With all that behind us it is finally time to write some code and use our new service. <br /><br />
Note: <br /><br />
All your configuration data is stored in a folder called .model in a file called ZendAMF.fml ( YOUR_PROJECT_NAME.fml ). It is good to know where this is in case you want to share the same services across multiple projects or between users and dont want to have to set up the input and return value mappings again.<br /><br />
In your main application declare the following buttons from the Spark components and inside an HGroup. As you see my buttons have labels and click handlers. This tutorial isn&#8217;t meant to cover all the new stuff that Flashbuilder does, but as you enter the portion of the button setting up the click handler, you will see &#8216;Generate Click Handler&#8217; as you type. Press enter when you see that message and Flashbuilder will write you a stub click handler, its pretty cool and quite the time saver.<br />
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #007700">&lt;</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">HGroup&nbsp;top</span><span style="color: #007700">=</span><span style="color: #DD0000">"20"&nbsp;</span><span style="color: #0000BB">left</span><span style="color: #007700">=</span><span style="color: #DD0000">"20"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">Button&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="color: #007700">=</span><span style="color: #DD0000">"GetTrack"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">click</span><span style="color: #007700">=</span><span style="color: #DD0000">"button1_clickHandler(event)"&nbsp;</span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">Button&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="color: #007700">=</span><span style="color: #DD0000">"GetTrackList"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">click</span><span style="color: #007700">=</span><span style="color: #DD0000">"button2_clickHandler(event)"&nbsp;</span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">Button&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="color: #007700">=</span><span style="color: #DD0000">"Clear"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">click</span><span style="color: #007700">=</span><span style="color: #DD0000">"resultList.dataProvider&nbsp;=&nbsp;null"&nbsp;</span><span style="color: #007700">/&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />&lt;/</span><span style="color: #0000BB">s</span><span style="color: #007700">:</span><span style="color: #0000BB">HGroup</span><span style="color: #007700">&gt;&nbsp;</span>
</span>
</code></div><p><br /><br />
Lets think of those buttons as our control bar. IN order to see what happened, we are going to need to be able to display the data when it is returned from the service. For this we are going to use the Spark List. Add the following code below your HGroup<br />
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #007700">&lt;</span><span style="color: #0000BB">s</span><span style="color: #007700">:List&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">id</span><span style="color: #007700">=</span><span style="color: #DD0000">"resultList"<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">labelField</span><span style="color: #007700">=</span><span style="color: #DD0000">"trackName"<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">width</span><span style="color: #007700">=</span><span style="color: #DD0000">"400"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">top</span><span style="color: #007700">=</span><span style="color: #DD0000">"50"<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">left</span><span style="color: #007700">=</span><span style="color: #DD0000">"20"</span><span style="color: #007700">/&gt;&nbsp;</span>
</span>
</code></div><p><br /><br />
We are almost done, now all that is left is to write the content for the click handlers and write some responders for when the service returns data. Below is all the code you need to finish this tutorial.</br>
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #007700">protected&nbsp;function&nbsp;</span><span style="color: #0000BB">button1_clickHandler</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">event&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">MouseEvent&nbsp;</span><span style="color: #007700">)&nbsp;:&nbsp;</span><span style="color: #0000BB">void<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Get&nbsp;an&nbsp;instance&nbsp;of&nbsp;the&nbsp;service<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">service&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ZendAMFService&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ZendAMFService</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Add&nbsp;some&nbsp;handlers&nbsp;for&nbsp;result&nbsp;and&nbsp;fault<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">service</span><span style="color: #007700">.</span><span style="color: #0000BB">addEventListener</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">ResultEvent</span><span style="color: #007700">.</span><span style="color: #0000BB">RESULT</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">resultHandler&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">service</span><span style="color: #007700">.</span><span style="color: #0000BB">addEventListener</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">FaultEvent</span><span style="color: #007700">.</span><span style="color: #0000BB">FAULT</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">faultHandler&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Call&nbsp;the&nbsp;function&nbsp;on&nbsp;the&nbsp;server<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">service</span><span style="color: #007700">.</span><span style="color: #0000BB">getTrack</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">10&nbsp;</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;The&nbsp;trackId&nbsp;doesnt&nbsp;matter&nbsp;for&nbsp;this&nbsp;tutorial<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">protected&nbsp;function&nbsp;</span><span style="color: #0000BB">button2_clickHandler</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">event&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">MouseEvent&nbsp;</span><span style="color: #007700">)&nbsp;:&nbsp;</span><span style="color: #0000BB">void<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Get&nbsp;an&nbsp;instance&nbsp;of&nbsp;the&nbsp;service<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">service&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ZendAMFService&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ZendAMFService</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Add&nbsp;some&nbsp;handlers&nbsp;for&nbsp;result&nbsp;and&nbsp;fault<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">service</span><span style="color: #007700">.</span><span style="color: #0000BB">addEventListener</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">ResultEvent</span><span style="color: #007700">.</span><span style="color: #0000BB">RESULT</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">resultHandler&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">service</span><span style="color: #007700">.</span><span style="color: #0000BB">addEventListener</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">FaultEvent</span><span style="color: #007700">.</span><span style="color: #0000BB">FAULT</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">faultHandler&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Call&nbsp;the&nbsp;function&nbsp;on&nbsp;the&nbsp;server<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">service</span><span style="color: #007700">.</span><span style="color: #0000BB">getTrackList</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">10&nbsp;</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;The&nbsp;albumId&nbsp;doesnt&nbsp;matter&nbsp;for&nbsp;this&nbsp;tutorial<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">protected&nbsp;function&nbsp;</span><span style="color: #0000BB">resultHandler</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">event&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ResultEvent&nbsp;</span><span style="color: #007700">)&nbsp;:&nbsp;</span><span style="color: #0000BB">void<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Is&nbsp;this&nbsp;return&nbsp;from&nbsp;getTrackList<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(&nbsp;</span><span style="color: #0000BB">event</span><span style="color: #007700">.</span><span style="color: #0000BB">result&nbsp;is&nbsp;ArrayCollection&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultList</span><span style="color: #007700">.</span><span style="color: #0000BB">dataProvider&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">event</span><span style="color: #007700">.</span><span style="color: #0000BB">result&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">ArrayCollection</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Is&nbsp;this&nbsp;return&nbsp;from&nbsp;getTrack<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(&nbsp;</span><span style="color: #0000BB">event</span><span style="color: #007700">.</span><span style="color: #0000BB">result&nbsp;is&nbsp;Track&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultList</span><span style="color: #007700">.</span><span style="color: #0000BB">dataProvider&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ArrayCollection</span><span style="color: #007700">(</span><span style="color: #0000BB">&#91;event</span><span style="color: #007700">.</span><span style="color: #0000BB">result&#93;</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;Convert&nbsp;the&nbsp;single&nbsp;track&nbsp;to&nbsp;an&nbsp;array&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">protected&nbsp;function&nbsp;</span><span style="color: #0000BB">faultHandler</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">event&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">FaultEvent&nbsp;</span><span style="color: #007700">)&nbsp;:&nbsp;</span><span style="color: #0000BB">void<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alert</span><span style="color: #007700">.</span><span style="color: #0000BB">show</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">event</span><span style="color: #007700">.</span><span style="color: #0000BB">message</span><span style="color: #007700">.</span><span style="color: #0000BB">toString</span><span style="color: #007700">()&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div><p><br />
</p><ul><li class="icon source">
<a href="http://codingangry.com/demos/ZendAMF/srcview" target="NEW">View The Source</a> 
</li>
<li class="icon download">
<a href="http://codingangry.com/demos/ZendAMF/serverFiles.zip" target="NEW">Downlod Server Files</a> 
</li>
<li class="icon example">
<a href="http://codingangry.com/demos/ZendAMF" target="NEW">View The Example</a> 
</li>
</ul><p>
<b>Conclusion ...</b><br />
That was a long one, but we are done. You just set up a project with configurations to a local PHP server. You then were able to point the Flashbuilder IDE to a service located on your server. Lastly you were able (I hope) to execute service calls all from within Flashbuilder. <br /><br />
Happy Coding
</p>
      ]]></content>
    </entry>

    <entry>
      <title>Fieldrunners &#45; Frostbite</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/fieldrunnersFrostbite/" />
      <id>tag:codingangry.com,2010:index.php/site/index/1.38</id>
      <published>2010-01-02T01:35:37Z</published>
      <updated>2010-01-12T01:35:46Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Misc"
        scheme="http://codingangry.com/index.php/site/C12/"
        label="Misc" />
      <content type="html"><![CDATA[
         <p>Hey All,<br />
This is a quick solution to Field Runners Frostbite. This was by far the hardest map and worth the extra money. The hardest thing on this one was the effing helicopters. As per usual there is need for lots of ground coverage. What caused the pain was the occasional air raid. These raids were harsh and I would loose 2 to 3 points per raid. Long story short, this is my solutions and there are only 4 lives left. I understand that this is not a perfect solution, but is is an answer.<br />
<br><br />
<img src="http://codingangry.com/demos/frostbite.png" /><br />
<br><br />
Happy coding
</p>
      ]]></content>
    </entry>

    <entry>
      <title>Ducks on Electro</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/ducks_on_electro/" />
      <id>tag:codingangry.com,2009:index.php/site/index/1.35</id>
      <published>2009-09-21T20:35:31Z</published>
      <updated>2009-09-21T20:38:33Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>This year on the playa I spent more time on the decks than last. My recording setup could have been a little better, but I managed to get some music from Burningman home. This is an electro set with<br />
words, not too tweaky. Enjoy.</p>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/DucksOnElectro.mp3" target="NEW">Download the MP3</a>
</li></ul>
      ]]></content>
    </entry>

    <entry>
      <title>Sunrise Coffee Day Two</title>
      <link rel="alternate" type="text/html" href="http://codingangry.com/index.php/site/sunrise_coffee_day_two/" />
      <id>tag:codingangry.com,2009:index.php/site/index/1.33</id>
      <published>2009-09-09T22:41:41Z</published>
      <updated>2009-09-21T20:38:42Z</updated>
      <author>
            <name>Ando</name>
            <email>josephando@yahoo.com</email>
                  </author>

      <category term="Mixes"
        scheme="http://codingangry.com/index.php/site/C2/"
        label="Mixes" />
      <content type="html"><![CDATA[
         <p>For several years now the Sunrise Coffee Camp has been across the street from the Duckpond at Burningman. This year I decided to spin some sets for their early morning enjoyment. This set got cut short do to some technical difficulties, but I figured I would share anyway. Enjoy.</p>

<ul><li class="icon downloadMP3">
<a href="http://codingangry.com/sets/SunriseCoffee01.mp3" target="NEW">Download the MP3</a>
</li></ul>
      ]]></content>
    </entry>


</feed>