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

<channel>
	<title>Architect, Engineer, Tech Enthusiast - Hasan Otuome</title>
	<atom:link href="http://technophi.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://technophi.com</link>
	<description>personal weblog of a tech addict</description>
	<lastBuildDate>Tue, 02 Mar 2010 04:46:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Upgrading Flash Builder</title>
		<link>http://technophi.com/2010/03/01/upgrading-flash-builder/</link>
		<comments>http://technophi.com/2010/03/01/upgrading-flash-builder/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 04:46:56 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=438</guid>
		<description><![CDATA[
Whether you&#8217;re upgrading because you&#8217;re using BETA versions that change rather frequently or upgrading to the next major release, you don&#8217;t want to lose all your hard work invested in configuring your setup. Here&#8217;s how I handle it and hopefully it&#8217;s useful to you. If you have other cool ways to persist workflows between upgrades, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technophi.com/wp-content/uploads/ol_upgrade_flashbuilder.png"><img src="http://technophi.com/wp-content/uploads/ol_upgrade_flashbuilder.png" alt="" title="upgrading flashbuilder" width="603" height="351" class="aligncenter size-full wp-image-440" /></a></p>
<p>Whether you&#8217;re upgrading because you&#8217;re using BETA versions that change rather frequently or upgrading to the next major release, you don&#8217;t want to lose all your hard work invested in configuring your setup. Here&#8217;s how I handle it and hopefully it&#8217;s useful to you. If you have other cool ways to persist workflows between upgrades, please share them.</p>
<h4>Workspaces</h4>
<p>I&#8217;ve created a <strong>workspaces</strong> folder in a custom directory on my HD where I store all the workspaces I like to use with Eclipse-based IDEs. I separate them by IDE and then by purpose. So for Flash Builder, my workspace hierarchy is like this:</p>
<pre>
/workspaces
  /_fb4
    /air
    /as
    /flash
    /flex
</pre>
<p>This is where all of my IDE preferences and workbench layout settings are stored. Centralizing them here allows me greater flexibility when upgrading since I never have to worry about any changes to installation procedures overwriting my custom settings. Nevertheless, I backup my workspaces prior to upgrading and since their small text files it only takes a second to archive.</p>
<h4>Documents Directory</h4>
<p>On OSX, the Flash Builder installer creates an <strong>Adobe Flash Builder 4</strong> directory in your Documents directory. The installation instructions advise you to uninstall any previous versions of Flash Builder before installing the new version. Following this advice will delete this folder if it already exists. So, be sure to back this up prior to uninstalling your current version. That way you can cherry pick anything you need after installing the new version.</p>
<h4>Applications Directory</h4>
<p>You should also backup up your program installation in your Applications directory for the same reasons as with the folder in your Documents directory. If you&#8217;ve heavily modified your install with additional plugins, etc., this is vital!</p>
<h4>Plugin Restoration</h4>
<p>Where are all my cool plugins? They got wiped during the upgrade process but if you followed my advice and backed everything up, you&#8217;ll be back up and running in a minute or two. There are generally (2) locations where plugin info is stored for Flash Builder. If you pull the data from your backups and place them in the following locations, you should have full access to all your plugins post-upgrade (provided they still work with the latest release) </p>
<p>#1 &#8211; /Documents/Adobe Flash Builder 4/.metadata/.plugins<br />
#2 &#8211; /Applications/Adobe Flash Builder 4/plugins</p>
<p>Although this post is slanted more towards upgrading on OSX, it should be similar for other operating systems. Any issues, let me know&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/03/01/upgrading-flash-builder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FITC Amsterdam 2010 Recap</title>
		<link>http://technophi.com/2010/02/24/fitc-amsterdam-2010-recap/</link>
		<comments>http://technophi.com/2010/02/24/fitc-amsterdam-2010-recap/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 01:27:08 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[FITC]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[LAFO]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=392</guid>
		<description><![CDATA[
First, this will be a rather lengthy pictorial of the last few days here in Amsterdam. For those that have never been, I&#8217;ll also share my insights and tips on visiting the city since I&#8217;m a seasoned pro now, LOL (4th time).
The City
Amsterdam is a really cool city. It hasn&#8217;t changed that much since my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technophi.com/wp-content/uploads/amsterdam_header.png"><img src="http://technophi.com/wp-content/uploads/amsterdam_header.png" alt="" title="amsterdam skyline" width="660" height="160" class="aligncenter size-full wp-image-394" /></a></p>
<p>First, this will be a rather lengthy pictorial of the last few days here in Amsterdam. For those that have never been, I&#8217;ll also share my insights and tips on visiting the city since I&#8217;m a seasoned pro now, LOL (4th time).</p>
<h3>The City</h3>
<p>Amsterdam is a really cool city. It hasn&#8217;t changed that much since my last visit about a decade ago. It has a good mixture of rustic Old European charm and 20th century modernism. It&#8217;s almost as vibrant as New York City but tends to slow down during the week around 2am <img src='http://technophi.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0325.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0325-225x300.jpg" alt="" title="jodenbreestraat" width="225" height="300" class="aligncenter size-medium wp-image-409" /></a></p>
<p>The locals are generally friendly and often find amusement in the confused faces of the American tourists. This is also definitely a bike-friendly city with a lot of the population opting for beach cruisers and mopeds over cars.</p>
<p>The city is filled with quaint little coffee shops, bars and restaurants where one can enjoy an evening of good conversation and more with friends.</p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0343.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0343-225x300.jpg" alt="" title="waterlooplein" width="225" height="300" class="aligncenter size-medium wp-image-412" /></a></p>
<p>Having traveled abroad during an era when technology wasn&#8217;t as prevalent, it&#8217;s always amazing to see how it has become so deeply integrated into the fabric of life. On that note, if you have an iPhone, (2) useful apps to have are ATM Hunter and Amsterdam GPS Guide. Both are free and can save you a considerable amount of time. ATM Hunter helps you to locate the nearest Geldautomaat so you can gain access to some local currency. Amsterdam GPS Guide provides offline maps for you to use to scour the city. These free apps will have you motoring about like a local in no time.</p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0344.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0344-225x300.jpg" alt="" title="coffe shop reefer" width="225" height="300" class="aligncenter size-medium wp-image-415" /></a></p>
<p>Here&#8217;s a list of some places, in no particular order, worth checking out when in Amsterdam:<br />
- Kadinsky&#8217;s (several locations)<br />
- Abraxas<br />
- Supper Club<br />
- Chipsy King<br />
- Renee&#8217;s Croissants<br />
- The Greenhouse<br />
- Coffee Shop Reefer</p>
<p>Amsterdam also has its dark side so enjoy but be wary of your surroundings always. While you&#8217;re busy watching the sites, someone is always watching you. Should you feel drawn to de Wallen (RLD), try visiting first during the day then return after 10p when it comes to life. DO NOT take pictures of the girls in the windows and if a local approaches you talking about a &#8220;party&#8221;, politely tell him no thanks and keep moving (either dealer or thief).</p>
<p>Now, these are just a few of the things I&#8217;ve come to learn about the city over the past 2 decades of visits. Hopefully they&#8217;ll be helpful to 1st timers or those who have visited previously but a lot of time has passed since their last visit. If you think I&#8217;ve got it twisted, let me know.</p>
<h3>The Conference</h3>
<p>FITC was filled with many amazing presentations and workshops. Everything from audio to video to 3d to <a href="http://music.almerblank.com/">converting images into sound</a> and even workflows for building iPhone apps with the forthcoming Flash CS5. While the general consensus was that the entire conference was outstanding, the talks by Mario Klingermann, Jared Tarbell and Ralph Hauwert seemed to rank high as the crowd favorites. Additional talks that peeked my interest were Joa Ebart&#8217;s overview of his <a href="http://apparat.googlecode.com">open source project</a> and Sam Agesilas&#8217; preview of the forthcoming Orchid open source framework.</p>
<h3>The Fellowship</h3>
<p>This alone is worth the price of admission + trip. Being able to hang out with industry geniuses after all the tension of putting on a successful conference has passed is priceless. The post-conference wind down is often just a continuation of the past days&#8217; events but in a much more relaxed and social environment.</p>
<p>Here we&#8217;re at the Hotel Ambasade participating in a linkup w/Flash Brighton hosted by Seb Lee-Delisle (a/k/a &#8220;Awesome&#8221;). Pictured from left to right are Jim Corbett, Grant Skinner and Sam Agesilas discussing the mobile platform. </p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0349.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0349-225x300.jpg" alt="" title="hotel ambasade flash giants 1" width="225" height="300" class="aligncenter size-medium wp-image-419" /></a></p>
<p>Later on, Ralph Hauwert chimes in on a response to a question from the Flash Brighton group. </p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0351.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0351-225x300.jpg" alt="" title="hotel ambasade flash giants 2" width="225" height="300" class="aligncenter size-medium wp-image-422" /></a></p>
<p>Stacy Mulcahy and Masakazu (Mash) Ohtsuka patiently awaiting their turns to share in the discussion.</p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0352.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0352-225x300.jpg" alt="" title="hotel ambasade - flash giants 3" width="225" height="300" class="aligncenter size-medium wp-image-425" /></a></p>
<p>Influxis co-founder, Richard Blakely, and Seb discussing Rich Media.</p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0350.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0350-225x300.jpg" alt="" title="hotel ambasade - flash giants 4" width="225" height="300" class="aligncenter size-medium wp-image-426" /></a></p>
<p>Adobe&#8217;s Lee Brimelow and Mike Chambers arrive on the scene to share in the festivities.</p>
<p><a href="http://technophi.com/wp-content/uploads/IMG_0353.jpg"><img src="http://technophi.com/wp-content/uploads/IMG_0353-225x300.jpg" alt="" title="hotel ambasade - flash giants 5" width="225" height="300" class="aligncenter size-medium wp-image-427" /></a></p>
<p>The evening was definitely off to a good start. Later that night, in a dark, subterranean and smoke filled room, the leaders of the Flash community gathered to pontificate further on the future of the Flash platform. Sorry, can&#8217;t show those pictures as I&#8217;m under an NSTPA&#8230;;)</p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/02/24/fitc-amsterdam-2010-recap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using a Custom AdvancedDataGridHeaderRenderer to Display a Custom Image</title>
		<link>http://technophi.com/2010/02/09/using-a-custom-advanceddatagridheaderrenderer-to-display-a-custom-image/</link>
		<comments>http://technophi.com/2010/02/09/using-a-custom-advanceddatagridheaderrenderer-to-display-a-custom-image/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 18:38:07 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flash Platform]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=385</guid>
		<description><![CDATA[You decide to use an AdvancedDataGrid to display your data and for one of the columns you would prefer to use an icon instead of a text label to indicate the kind of data this column represents. 
First step is building the renderer. You can use either MXML or ActionScript but for this example we&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>You decide to use an AdvancedDataGrid to display your data and for one of the columns you would prefer to use an icon instead of a text label to indicate the kind of data this column represents. </p>
<p>First step is building the renderer. You can use either MXML or ActionScript but for this example we&#8217;ll use ActionScript.</p>
<div class="wp_syntax">
<div class="code">
<pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> labs.otuome.ui.renderers
<span style="color: #000000;">&#123;</span>
  <span style="color: #0033ff; font-weight: bold;">import</span> mx.controls.Button;
  <span style="color: #0033ff; font-weight: bold;">import</span> mx.controls.advancedDataGridClasses.AdvancedDataGridHeaderRenderer;
&nbsp;
  <span style="color: #3f5fbf;">/**
   * Custom header renderer for displaying
   * a graphical image in the column header.
   * @author Hasan Otuome
   */</span>
  <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> StatusHeaderRenderer extends AdvancedDataGridHeaderRenderer
  <span style="color: #000000;">&#123;</span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #009900;">// PRIVATE PROPERTIES                                                                    </span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _btn<span style="color: #000000; font-weight: bold;">:</span>Button;
    <span style="color: #0033ff; font-weight: bold;">private</span> const LEFT_PADDING<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">12</span>;
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #009900;">// PUBLIC PROPERTIES                                                                     </span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
&nbsp;
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #009900;">// PUBLIC METHODS                                                                        </span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #3f5fbf;">/**
     * Constructor
     */</span>
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> StatusHeaderRenderer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #0033ff; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #009900;">// OVERRIDES</span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #3f5fbf;">/**
     * Override to add the custom component.
     */</span>
    override <span style="color: #0033ff; font-weight: bold;">protected</span> <span style="color: #339966; font-weight: bold;">function</span> createChildren<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #0033ff; font-weight: bold;">super</span>.createChildren<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
      _btn = <span style="color: #0033ff; font-weight: bold;">new</span> Button<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
      _btn.<span style="color: #004993;">width</span> = <span style="color: #000000; font-weight:bold;">16</span>;
      _btn.<span style="color: #004993;">height</span> = <span style="color: #000000; font-weight:bold;">16</span>;
      _btn.<span style="color: #004993;">setStyle</span><span style="color: #000000;">&#40;</span> <span style="color: #990000;">'skin'</span>, StatusMarkerHeaderIconSkin <span style="color: #000000;">&#41;</span>;
&nbsp;
      <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span> _btn <span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
    <span style="color: #3f5fbf;">/**
     * Override to layout the children
     * @param unscaledWidth
     * @param unscaledHeight
     */</span>
    override <span style="color: #0033ff; font-weight: bold;">protected</span> <span style="color: #339966; font-weight: bold;">function</span> updateDisplayList<span style="color: #000000;">&#40;</span> unscaledWidth<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>,
                                                  unscaledHeight<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
    <span style="color: #000000;">&#123;</span>
      _btn.<span style="color: #004993;">x</span> = LEFT_PADDING;
&nbsp;
      <span style="color: #0033ff; font-weight: bold;">super</span>.updateDisplayList<span style="color: #000000;">&#40;</span> unscaledWidth, unscaledHeight <span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
    <span style="color: #009900;">// PRIVATE METHODS</span>
    <span style="color: #009900;">/////////////////////////////////////////////////////////////////////////////////////////</span>
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre>
</div>
</div>
<p>Here we&#8217;ve added a 16&#215;16 button with a custom skin that will serve as our column header and we adjust the position of the custom skin so that it displays where we&#8217;d like it to.</p>
<p>Now, we can provide this class name to our AdvancedDataGridColumn that we wish to customize. We do this by assigning our custom class to the headerRenderer property of the AdvancedDataGridColumn. This property can be set via MXML or ActionScript. I&#8217;ll show an example in ActionScript as that approach is slightly more involved.</p>
<div class="wp_syntax">
<div class="code">
<pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">import</span> mx.core.ClassFactory;
myADGColumn.headerRenderer = <span style="color: #0033ff; font-weight: bold;">new</span> ClassFactory<span style="color: #000000;">&#40;</span> StatusHeaderRenderer <span style="color: #000000;">&#41;</span>;</pre>
</div>
</div>
<p>Here we&#8217;ve used ClassFactory to get an instance of our custom renderer and we&#8217;ve assigned that instance to our chosen data grid column. Now, all that&#8217;s left to do is compile our application to see the result.</p>
<p><a href="http://technophi.com/wp-content/uploads/olgk_custom_header.png"><img src="http://technophi.com/wp-content/uploads/olgk_custom_header-300x195.png" alt="" title="olgk_custom_header" width="300" height="195" class="aligncenter size-medium wp-image-388" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/02/09/using-a-custom-advanceddatagridheaderrenderer-to-display-a-custom-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joining the Adobe Community Professionals for 2010</title>
		<link>http://technophi.com/2010/01/18/joining-the-adobe-community-professionals-for-2010/</link>
		<comments>http://technophi.com/2010/01/18/joining-the-adobe-community-professionals-for-2010/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 03:33:19 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=371</guid>
		<description><![CDATA[Formerly the Adobe Community Experts program, this is a collective of awesome individuals who exhibit expertise in various Adobe product areas from Acrobat to Photoshop, Flash, Cold Fusion, Flex, AIR and many, many more. Comprised of community leaders, this group has a worldwide presence and expounds the virtues of Adobe to the masses through the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lizfrederick.blogspot.com/2010/01/adobe-community-professionals.html">Formerly the Adobe Community Experts program</a>, this is a collective of awesome individuals who exhibit expertise in various Adobe product areas from Acrobat to Photoshop, Flash, Cold Fusion, Flex, AIR and many, many more. Comprised of community leaders, this group has a worldwide presence and expounds the virtues of Adobe to the masses through the sharing of their time and expertise.</p>
<p>I&#8217;m truly honored to have been <a href="http://lizfrederick.blogspot.com/2010/01/new-acps-for-2010.html">chosen as a member</a> of this select group and look forward to expanding my community efforts throughout this new year. Having missed FlashCamp Brasil this past weekend, this revelation makes the trip to FITC Amsterdam that much more rewarding. See you there!!</p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/01/18/joining-the-adobe-community-professionals-for-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GitX Tweaks: Commit View</title>
		<link>http://technophi.com/2010/01/17/gitx-tweaks-commit-view/</link>
		<comments>http://technophi.com/2010/01/17/gitx-tweaks-commit-view/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 14:50:26 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[GitX]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=366</guid>
		<description><![CDATA[
So, after thinking about my most recent updates, I decided I wanted to change the way that the commit view looks but just slightly. This is my 1st pass on some things I&#8217;d like to have available via the toolbar.
Would also like to tweak the view selector buttons, revise remote selection and add toolbar buttons [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technophi.com/wp-content/uploads/olgx_gitx_screenshot_3.png"><img src="http://technophi.com/wp-content/uploads/olgx_gitx_screenshot_3-300x208.png" alt="" title="olgx_gitx_screenshot_3" width="300" height="208" class="aligncenter size-medium wp-image-367" /></a></p>
<p>So, after thinking about <a href="http://technophi.com/2010/01/17/gitx-update-remote-selector/">my most recent updates</a>, I decided I wanted to change the way that the commit view looks but just slightly. This is my 1st pass on some things I&#8217;d like to have available via the toolbar.</p>
<p>Would also like to tweak the view selector buttons, revise remote selection and add toolbar buttons for all the contextual menu items, which aren&#8217;t many.</p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/01/17/gitx-tweaks-commit-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GitX Update: Remote Selector</title>
		<link>http://technophi.com/2010/01/17/gitx-update-remote-selector/</link>
		<comments>http://technophi.com/2010/01/17/gitx-update-remote-selector/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 09:07:43 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[GitX]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=360</guid>
		<description><![CDATA[
Previously, I implemented toolbar buttons where each button was tied to a specific remote repository. This was/is fine if you&#8217;ll only be working with one or two hosts but becomes cumbersome when dealing with multiple hosts.
Enter the NSPopUpButton. By switching to this UI element I&#8217;m able to allow a user to select a remote from [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technophi.com/wp-content/uploads/olgx_gitx_screenshot_2.png"><img src="http://technophi.com/wp-content/uploads/olgx_gitx_screenshot_2-299x220.png" alt="" title="olgx_gitx_screenshot_2" width="299" height="220" class="aligncenter size-medium wp-image-361" /></a></p>
<p><a href="http://technophi.com/2009/12/04/gitx-a-git-gui-for-osx/">Previously</a>, I implemented toolbar buttons where each button was tied to a specific remote repository. This was/is fine if you&#8217;ll only be working with one or two hosts but becomes cumbersome when dealing with multiple hosts.</p>
<p>Enter the NSPopUpButton. By switching to this UI element I&#8217;m able to allow a user to select a remote from a configurable list of remote repositories. I like this UX slightly better than having a button for each remote and the functionality behind the scenes still reaches the same result.</p>
<p>Now with that out of the way, I can move on to some other items on my TODO list&#8230;:)</p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/01/17/gitx-update-remote-selector/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing Opticon Runtime Debugger</title>
		<link>http://technophi.com/2010/01/09/introducing-opticon-runtime-debugger/</link>
		<comments>http://technophi.com/2010/01/09/introducing-opticon-runtime-debugger/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 12:49:48 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=340</guid>
		<description><![CDATA[
Opticon is a runtime debugging console useful for Flash/Flex developers. It&#8217;s simple to start using in your projects. To use, follow these steps after installing the application:
1. Launch the application
2. Click the Settings button
3. Click on the SWC icon to add the OpticonConnector to your project&#8217;s build path
4. Replace your trace statements with one of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://technophi.com/wp-content/uploads/ol_opticon_adm_banner_495x250.png" alt="ol_opticon_adm_banner_495x250" title="ol_opticon_adm_banner_495x250" width="495" height="250" class="aligncenter size-full wp-image-348" /></p>
<p>Opticon is a runtime debugging console useful for Flash/Flex developers. It&#8217;s simple to start using in your projects. To use, follow these steps after installing the application:</p>
<p>1. Launch the application<br />
2. Click the Settings button<br />
3. Click on the SWC icon to add the OpticonConnector to your project&#8217;s build path<br />
4. Replace your trace statements with one of the following:</p>
<ul style="list-style-type:none">
<li> a) <font color="green">Opticon.log(&#8216;message to display&#8217;)</font></li>
<li> b) <font color="darkorange">Opticon.warning(&#8216;warning to display&#8217;)</font></li>
<li> c) <font color="#cc0000">Opticon.error(&#8216;error to display&#8217;)</font></li>
</ul>
<p>Download available from:<br />
<a href="http://www.adobe.com/cfusion/marketplace/index.cfm?event=marketplace.offering&#038;offeringid=17303">Adobe AIR Marketplace</a><br />
<a href="http://opticon.riaforge.org">RIAForge</a></p>
<p><strong><em>Some might ask why?</strong></em> This idea first appeared when AIR was Apollo and was born out of necessity (I always forget some trace statements during cleanup). Could I use global find and replace? Sure, when I&#8217;m developing with Eclipse-based IDEs but that&#8217;s not always the case.</p>
<p><strong><em>Why not use one of the other great tools out there?</strong></em> After 2 years in the shadows, it&#8217;s ready to be shared with the world and, because I have a vision of where I&#8217;d like to take this so hopefully you&#8217;ll come along for the ride.</p>
<p><strong><em>Where can I submit any bugs I find?</strong></em> I&#8217;ll have the bug reporting mechanism in place shortly. You&#8217;ll be notified via the application or you can subscribe to this post to be notified once that goes live.</p>
<p><strong><em>My version doesn&#8217;t include the connector. What can I do?</strong></em> This happened as a result of a build error. Visit this link to download the connector <a href="http://labs.otuome.com/get/OpticonConnector">Get Opticon Connector</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2010/01/09/introducing-opticon-runtime-debugger/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Double-headed Arrows with GraphicsUtil</title>
		<link>http://technophi.com/2009/12/07/double-headed-arrows-with-graphicsutil/</link>
		<comments>http://technophi.com/2009/12/07/double-headed-arrows-with-graphicsutil/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:00:03 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=333</guid>
		<description><![CDATA[I recently ran across this awesome utility class, GraphicsUtil, created by Noel Billig. It allows the ability to draw lines with an arrow on one end using the drawing API in AS3. This proved useful for a project I was working on. In addition to its default behavior however, I needed the utility class to [...]]]></description>
			<content:encoded><![CDATA[<p>I recently ran across this awesome utility class, <a href="http://www.dncompute.com/blog/2008/07/17/graphicsutil-a-utility-class-for-drawing-arrows.html">GraphicsUtil</a>, created by Noel Billig. It allows the ability to draw lines with an arrow on one end using the drawing API in AS3. This proved useful for a project I was working on. In addition to its default behavior however, I needed the utility class to provide the ability to draw lines with arrows on both ends. Well thanks to Noel&#8217;s clean code, I was able to easily modify the base class to do just that by adding the following static method:</p>
<div class="wp_syntax">
<div class="code">
<pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/**
 * Draws a double-headed arrow. Pass in ArrowStyle
 * objects for both arrows to override the default settings.
 * @param graphics
 * @param start
 * @param end
 * @param startStyle
 * @param endStyle
 */</span>
<span style="color: #0033ff; font-weight: bold;">public</span> static <span style="color: #339966; font-weight: bold;">function</span> drawArrows<span style="color: #000000;">&#40;</span> <span style="color: #004993;">graphics</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Graphics</span>,
        <span style="color: #004993;">start</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>,end<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>,
        startStyle<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Object</span>=<span style="color: #0033ff; font-weight: bold;">null</span>,
        endStyle<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Object</span>=<span style="color: #0033ff; font-weight: bold;">null</span> <span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">// variables used for arrow 1</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> startArrowStyle<span style="color: #000000; font-weight: bold;">:</span>ArrowStyle;
	<span style="color: #6699cc; font-weight: bold;">var</span> startHalfWidth<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> vect1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startNorm<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> start1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> start2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> end1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> end2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startHeadPnt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startHeadPntNorm<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startEdge1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startEdge2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startShaftCenter<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startInter1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startInter2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startEdgeCenter<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startEdgeNorm<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startEdgeCntrl1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> startEdgeCntrl2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
&nbsp;
	<span style="color: #009900;">// variables used for arrow 2</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> endArrowStyle<span style="color: #000000; font-weight: bold;">:</span>ArrowStyle;
	<span style="color: #6699cc; font-weight: bold;">var</span> endHalfWidth<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> vect2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endNorm<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> end3<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> end4<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> start3<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> start4<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endHeadPnt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endHeadPntNorm<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endEdge1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endEdge2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endShaftCenter<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endInter1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endInter2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endEdgeCenter<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endEdgeNorm<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endEdgeCntrl1<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
	<span style="color: #6699cc; font-weight: bold;">var</span> endEdgeCntrl2<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Point</span>;
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">start</span>.<span style="color: #004993;">equals</span><span style="color: #000000;">&#40;</span>end<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">return</span>;
&nbsp;
	<span style="color: #009900;">///////////////////////////////// start arrow config \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\</span>
	<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>startStyle == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		startArrowStyle = <span style="color: #0033ff; font-weight: bold;">new</span> ArrowStyle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #000000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>startStyle <span style="color: #0033ff; font-weight: bold;">is</span> ArrowStyle<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		startArrowStyle = startStyle <span style="color: #0033ff; font-weight: bold;">as</span> ArrowStyle;
	<span style="color: #000000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;">else</span>
	<span style="color: #000000;">&#123;</span>
		startArrowStyle = <span style="color: #0033ff; font-weight: bold;">new</span> ArrowStyle<span style="color: #000000;">&#40;</span> startStyle <span style="color: #000000;">&#41;</span>;
	<span style="color: #000000;">&#125;</span>
&nbsp;
	vect1 = end.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> <span style="color: #004993;">start</span> <span style="color: #000000;">&#41;</span>;
	startHalfWidth = <span style="color: #000000;">&#40;</span>startArrowStyle.headWidth <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">?</span> startArrowStyle.headWidth <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span> <span style="color: #000000; font-weight: bold;">:</span> startArrowStyle.headLength <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span>;
&nbsp;
	<span style="color: #009900;">//Figure out the line start/end points</span>
	startNorm = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Point</span><span style="color: #000000;">&#40;</span> vect1.<span style="color: #004993;">y</span>, <span style="color: #000000; font-weight: bold;">-</span>vect1.<span style="color: #004993;">x</span> <span style="color: #000000;">&#41;</span>;
	startNorm.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> startArrowStyle.shaftThickness<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span> <span style="color: #000000;">&#41;</span>;
	start1 = <span style="color: #004993;">start</span>.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> startNorm <span style="color: #000000;">&#41;</span>;
	start2 = <span style="color: #004993;">start</span>.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> startNorm <span style="color: #000000;">&#41;</span>;
	end1 = end.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> startNorm <span style="color: #000000;">&#41;</span>;
	end2 = end.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> startNorm <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//figure out where the arrow head starts</span>
	startHeadPnt = vect1.<span style="color: #004993;">clone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	startHeadPnt.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> startHeadPnt.<span style="color: #004993;">length</span> <span style="color: #000000; font-weight: bold;">-</span> startArrowStyle.headLength <span style="color: #000000;">&#41;</span>;
	startHeadPnt = startHeadPnt.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> <span style="color: #004993;">start</span> <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//calculate the arrowhead corners</span>
	startHeadPntNorm = startNorm.<span style="color: #004993;">clone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	startHeadPntNorm.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> startHalfWidth <span style="color: #000000;">&#41;</span>;
	startEdge1 = startHeadPnt.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> startHeadPntNorm <span style="color: #000000;">&#41;</span>;
	startEdge2 = startHeadPnt.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> startHeadPntNorm <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//Figure out where the arrow connects the the shaft, then calc the intersections</span>
	startShaftCenter = <span style="color: #004993;">Point</span>.<span style="color: #004993;">interpolate</span><span style="color: #000000;">&#40;</span> end, startHeadPnt, startArrowStyle.shaftPosition <span style="color: #000000;">&#41;</span>;
	startInter1 = GeomUtil.getLineIntersection<span style="color: #000000;">&#40;</span> start1, end1, startShaftCenter, startEdge1 <span style="color: #000000;">&#41;</span>;
	startInter2 = GeomUtil.getLineIntersection<span style="color: #000000;">&#40;</span> start2, end2, startShaftCenter, startEdge2 <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//Figure out the control points</span>
	startEdgeCenter = <span style="color: #004993;">Point</span>.<span style="color: #004993;">interpolate</span><span style="color: #000000;">&#40;</span> end, startHeadPnt, startArrowStyle.edgeControlPosition <span style="color: #000000;">&#41;</span>;
	startEdgeNorm = startNorm.<span style="color: #004993;">clone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	startEdgeNorm.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> startHalfWidth <span style="color: #000000; font-weight: bold;">*</span> startArrowStyle.edgeControlSize <span style="color: #000000;">&#41;</span>;
	startEdgeCntrl1 = startEdgeCenter.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> startEdgeNorm <span style="color: #000000;">&#41;</span>;
	startEdgeCntrl2 = startEdgeCenter.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> startEdgeNorm <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">///////////////////////////////// end arrow config \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\</span>
	<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>endStyle == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		endArrowStyle = <span style="color: #0033ff; font-weight: bold;">new</span> ArrowStyle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #000000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>endStyle <span style="color: #0033ff; font-weight: bold;">is</span> ArrowStyle<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		endArrowStyle = endStyle <span style="color: #0033ff; font-weight: bold;">as</span> ArrowStyle;
	<span style="color: #000000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;">else</span>
	<span style="color: #000000;">&#123;</span>
		endArrowStyle = <span style="color: #0033ff; font-weight: bold;">new</span> ArrowStyle<span style="color: #000000;">&#40;</span> endStyle <span style="color: #000000;">&#41;</span>;
	<span style="color: #000000;">&#125;</span>
&nbsp;
	vect2 = <span style="color: #004993;">start</span>.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> end <span style="color: #000000;">&#41;</span>;
	endHalfWidth = <span style="color: #000000;">&#40;</span>endArrowStyle.headWidth <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">?</span> endArrowStyle.headWidth <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span> <span style="color: #000000; font-weight: bold;">:</span> endArrowStyle.headLength <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span>;
&nbsp;
	<span style="color: #009900;">//Figure out the line start/end points</span>
	endNorm = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Point</span><span style="color: #000000;">&#40;</span> vect2.<span style="color: #004993;">y</span>, <span style="color: #000000; font-weight: bold;">-</span>vect2.<span style="color: #004993;">x</span> <span style="color: #000000;">&#41;</span>;
	endNorm.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> endArrowStyle.shaftThickness <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span> <span style="color: #000000;">&#41;</span>;
	start3 = <span style="color: #004993;">start</span>.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> endNorm <span style="color: #000000;">&#41;</span>;
	start4 = <span style="color: #004993;">start</span>.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> endNorm <span style="color: #000000;">&#41;</span>;
	end3 = end.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> endNorm <span style="color: #000000;">&#41;</span>;
	end4 = end.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> endNorm <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//figure out where the arrow head starts</span>
	endHeadPnt = vect2.<span style="color: #004993;">clone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	endHeadPnt.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> endHeadPnt.<span style="color: #004993;">length</span> <span style="color: #000000; font-weight: bold;">-</span> endArrowStyle.headLength <span style="color: #000000;">&#41;</span>;
	endHeadPnt = endHeadPnt.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> end <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//calculate the arrowhead corners</span>
	endHeadPntNorm = endNorm.<span style="color: #004993;">clone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	endHeadPntNorm.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> endHalfWidth <span style="color: #000000;">&#41;</span>;
	endEdge1 = endHeadPnt.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> endHeadPntNorm <span style="color: #000000;">&#41;</span>;
	endEdge2 = endHeadPnt.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> endHeadPntNorm <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//Figure out where the arrow connects the the shaft, then calc the intersections</span>
	endShaftCenter = <span style="color: #004993;">Point</span>.<span style="color: #004993;">interpolate</span><span style="color: #000000;">&#40;</span> <span style="color: #004993;">start</span>, endHeadPnt, endArrowStyle.shaftPosition <span style="color: #000000;">&#41;</span>;
	endInter1 = GeomUtil.getLineIntersection<span style="color: #000000;">&#40;</span> end3, start3, endShaftCenter, endEdge1 <span style="color: #000000;">&#41;</span>;
	endInter2 = GeomUtil.getLineIntersection<span style="color: #000000;">&#40;</span> end4, start4, endShaftCenter, endEdge2 <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">//Figure out the control points</span>
	endEdgeCenter = <span style="color: #004993;">Point</span>.<span style="color: #004993;">interpolate</span><span style="color: #000000;">&#40;</span> <span style="color: #004993;">start</span>, endHeadPnt, endArrowStyle.edgeControlPosition <span style="color: #000000;">&#41;</span>;
	endEdgeNorm = endNorm.<span style="color: #004993;">clone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	endEdgeNorm.<span style="color: #004993;">normalize</span><span style="color: #000000;">&#40;</span> endHalfWidth <span style="color: #000000; font-weight: bold;">*</span> endArrowStyle.edgeControlSize <span style="color: #000000;">&#41;</span>;
	endEdgeCntrl1 = endEdgeCenter.<span style="color: #004993;">add</span><span style="color: #000000;">&#40;</span> endEdgeNorm <span style="color: #000000;">&#41;</span>;
	endEdgeCntrl2 = endEdgeCenter.<span style="color: #004993;">subtract</span><span style="color: #000000;">&#40;</span> endEdgeNorm <span style="color: #000000;">&#41;</span>;
&nbsp;
&nbsp;
	<span style="color: #009900;">///////////////////////////////// draw the graphics \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\</span>
	<span style="color: #009900;">// draw 1st arrow</span>
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">moveTo</span><span style="color: #000000;">&#40;</span> start1.<span style="color: #004993;">x</span>, start2.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> startInter1.<span style="color: #004993;">x</span>, startInter1.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> startEdge1.<span style="color: #004993;">x</span>, startEdge1.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">curveTo</span><span style="color: #000000;">&#40;</span> startEdgeCntrl1.<span style="color: #004993;">x</span>, startEdgeCntrl1.<span style="color: #004993;">y</span>, end.<span style="color: #004993;">x</span>, end.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">curveTo</span><span style="color: #000000;">&#40;</span> startEdgeCntrl2.<span style="color: #004993;">x</span>, startEdgeCntrl2.<span style="color: #004993;">y</span>, startEdge2.<span style="color: #004993;">x</span>, startEdge2.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> startInter2.<span style="color: #004993;">x</span>, startInter2.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> start2.<span style="color: #004993;">x</span>, start2.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> start1.<span style="color: #004993;">x</span>, start1.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #009900;">// draw 2nd arrow</span>
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">moveTo</span><span style="color: #000000;">&#40;</span> end3.<span style="color: #004993;">x</span>, end4.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> endInter1.<span style="color: #004993;">x</span>, endInter1.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> endEdge1.<span style="color: #004993;">x</span>, endEdge1.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">curveTo</span><span style="color: #000000;">&#40;</span> endEdgeCntrl1.<span style="color: #004993;">x</span>, endEdgeCntrl1.<span style="color: #004993;">y</span>, <span style="color: #004993;">start</span>.<span style="color: #004993;">x</span>, <span style="color: #004993;">start</span>.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">curveTo</span><span style="color: #000000;">&#40;</span> endEdgeCntrl2.<span style="color: #004993;">x</span>, endEdgeCntrl2.<span style="color: #004993;">y</span>, endEdge2.<span style="color: #004993;">x</span>, endEdge2.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> endInter2.<span style="color: #004993;">x</span>, endInter2.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> end4.<span style="color: #004993;">x</span>, end4.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
	<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span> end3.<span style="color: #004993;">x</span>, end3.<span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre>
</div>
</div>
<p>Those are the basics. It can be tweaked to taste, etc. Kudos to Noel for the such a useful class&#8230; <img src='http://technophi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2009/12/07/double-headed-arrows-with-graphicsutil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GitX: A git GUI for OSX</title>
		<link>http://technophi.com/2009/12/04/gitx-a-git-gui-for-osx/</link>
		<comments>http://technophi.com/2009/12/04/gitx-a-git-gui-for-osx/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 22:22:26 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[OSX Server]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=318</guid>
		<description><![CDATA[GitX is a git GUI made for OSX. It was created by Pieter de Bie and is a really solid tool for working with git on OSX. I&#8217;ve been using it for about 9 months now. I liked it so much when I first began using it that I immediately added the ability to perform [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gitx.frim.nl/">GitX</a> is a git GUI made for OSX. It was created by <a href="http://wiki.github.com/pieter/gitx">Pieter de Bie</a> and is a really solid tool for working with git on OSX. I&#8217;ve been using it for about 9 months now. I liked it so much when I first began using it that I immediately added the ability to perform remote pushes to <a href="http://unfuddle.com">Unfuddle</a>. </p>
<p>I was pushing some commits earlier this morning and realized that I never made the changes to GitX public. It was always my goal to share the updates with the community but I always kept getting sidetracked. Well, today I <a href="http://github.com/otuomelabs/gitx">forked the master project</a> and even added <a href="http://github.com">GitHub</a> integration. </p>
<p><a href="http://github.com/otuomelabs/gitx"><img src="http://technophi.com/wp-content/uploads/olgx_github_screenshot.png" alt="olgx_github_screenshot" title="olgx_github_screenshot" width="562" height="347" class="aligncenter size-full wp-image-321" /></a></p>
<p>You&#8217;ll need the latest version of Xcode to compile from source. If you just want access to the customized application, you can download a ZIP of the forked project and you&#8217;ll find the application in <strong>/path/to/download/build/Debug/GitX.app</strong>. Hope others find this as useful as I have&#8230;</p>
<p><img src="http://technophi.com/wp-content/uploads/olgx_gitx_screenshot.png" alt="olgx_gitx_screenshot" title="olgx_gitx_screenshot" width="555" height="464" class="aligncenter size-full wp-image-329" /></p>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2009/12/04/gitx-a-git-gui-for-osx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Overlaying the Flex SDK with the AIR 2.0 SDK on OSX</title>
		<link>http://technophi.com/2009/12/04/overlaying-the-flex-sdk-with-the-air-2-0-sdk-on-osx/</link>
		<comments>http://technophi.com/2009/12/04/overlaying-the-flex-sdk-with-the-air-2-0-sdk-on-osx/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 15:55:36 +0000</pubDate>
		<dc:creator>Hasan Otuome</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://technophi.com/?p=300</guid>
		<description><![CDATA[Since I develop with multiple IDEs, I maintain the latest releases of the Flex and AIR SDKs in a centralized location outside of their default install locations. This made enabling the AIR 2.0 SDK simple for me as all I had to do was the following:
1. Duplicate my Flex 3 SDK path
2. Rename the duplicate [...]]]></description>
			<content:encoded><![CDATA[<p>Since I develop with multiple IDEs, I maintain the latest releases of the Flex and AIR SDKs in a centralized location outside of their default install locations. This made enabling the AIR 2.0 SDK simple for me as all I had to do was the following:</p>
<p>1. Duplicate my Flex 3 SDK path<br />
2. Rename the duplicate to <strong>flex_sdk_3.x_air_sdk_2.x</strong><br />
3. Download the latest AIR 2.0 SDK (currently <strong>AIR20_mac_sdk_120209.tbz2</strong>)<br />
4. Place the AIR SDK zip in the root of the new Flex SDK directory</p>
<div class="wp_syntax">
<div class="code">
<pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>flex_sdk_3.x_air_sdk_2.x<span style="color: #000000; font-weight: bold;">/</span>AIR20_mac_sdk_120209.tbz2</pre>
</div>
</div>
<p>5. Open up Terminal in the new Flex SDK directory and execute the following command:</p>
<div class="wp_syntax">
<div class="code">
<pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xjf</span> AIR20_mac_sdk_120209.tbz2</pre>
</div>
</div>
<p>6. Open Flex Builder and add the new SDK -> <strong>Flex Builder > Preferences > Installed Flex SDKs > Add</strong></p>
<p>Now, when I want to create an AIR app that targets the 2.0 SDK all I have to do is</p>
<p>1. Update the project compiler settings to use the new SDK -> <strong>Project > Properties > Flex Compiler > Use a Specific SDK</strong><br />
2. Update the application descriptor file to use the AIR 2.0 namespace</p>
<div class="wp_syntax">
<div class="code">
<pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://ns.adobe.com/air/application/2.0beta&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre>
</div>
</div>
<p>All of the above steps can be repeated for the Flex 4 SDK as well.</p>
<p>For those interested, these are the items that were updated and added to the SDK for 2.0:<br />
<em>/bin/adl<br />
/bin/adt<br />
/frameworks/libs/air<br />
/frameworks/projects/air<br />
/lib/nai<br />
/lib/adt.jar<br />
/runtimes/air<br />
/samples<br />
/templates/air<br />
/AIR SDK Readme.txt<br />
/SDK license.pdf</em></p>
<p><strong>CAVEATS:</strong></p>
<ol>
<li>There&#8217;s a <a href="http://blogs.adobe.com/simplicity/2009/11/upcoming_certificate_renewal_c.html">new certificate process started in AIR 1.5.3</a> that may disrupt your workflow if you&#8217;re creating signed applications.</li>
<li>If you want to utilize the new native process features, you&#8217;ll have to implement multi-platform builds (native installers for Win, Mac and Linux) and these must occur on the target platform (ie, can only create DMGs on Mac, etc)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://technophi.com/2009/12/04/overlaying-the-flex-sdk-with-the-air-2-0-sdk-on-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
