<?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>sybersnake</title>
	<atom:link href="http://sybersnake.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sybersnake.com</link>
	<description>Bender called me a flesh bag.</description>
	<lastBuildDate>Thu, 29 Jul 2010 04:58:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>GRUB_ boot problem.</title>
		<link>http://sybersnake.com/2010/07/28/grub-_-boot-problem/</link>
		<comments>http://sybersnake.com/2010/07/28/grub-_-boot-problem/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 15:18:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=205</guid>
		<description><![CDATA[So I updated my OpenFiler storage appliance a few days ago and I had to restart it for the first time since the update. To my surprise upon reboot, I got the following &#8220;non-error&#8221; message &#8220;GRUB_&#8221;. No other message or error code.( OpenFiler does not have a LiveCD ) I searched all over google only [...]]]></description>
			<content:encoded><![CDATA[<p>So I updated my <a href="http://www.openfiler.com/">OpenFiler storage appliance</a> a few days ago and I had to restart it for the first time since the update.  To my surprise upon reboot, I got the following &#8220;non-error&#8221; message &#8220;GRUB_&#8221;.  No other message or error code.( OpenFiler does not have a LiveCD )  I searched all over google only to find out that most people said this was some sort of error that required a LiveCD to reinstall GRUB.  Well, I decided to hit the F11 key on restart ( to get the list of available devices to boot from ).  Upon manually selecting the correct HD, I was able to boot.  The moral of the story is, make sure your computer is attempting to boot the correct hard disk.  I went into the BIOS and set that hard disk as the default boot device.  Works just fine now.</p>
<p>Cheers,<br />
-J</p>
<p>P.S. On another topic, the error &#8220;Comreset Failed (errno=-16)&#8221; has the good possibility of meaning the power for that drive has failed and to try another molex connector ( I just found out two connectors, in one chain of the power supply, just failed on me ).  If it isn&#8217;t the power source ( you can tell the drive is spinning ) then its either a bug or the drive itself is causing a problem.  Check SMART status. </p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2010/07/28/grub-_-boot-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CommitOnly is broken on BindingUtils, vote now!</title>
		<link>http://sybersnake.com/2010/07/26/commitonly-is-broken-on-bindingutils-vote-now/</link>
		<comments>http://sybersnake.com/2010/07/26/commitonly-is-broken-on-bindingutils-vote-now/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 21:43:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=200</guid>
		<description><![CDATA[BindingUtils.bindSetter CommitOnly is broken and it got marked community so vote on this issue now! https://bugs.adobe.com/jira/browse/SDK-26901]]></description>
			<content:encoded><![CDATA[<p>BindingUtils.bindSetter CommitOnly is broken and it got marked community so vote on this issue now!</p>
<p><a href="https://bugs.adobe.com/jira/browse/SDK-26901">https://bugs.adobe.com/jira/browse/SDK-26901</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2010/07/26/commitonly-is-broken-on-bindingutils-vote-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I know you don&#8217;t need to hear from me regarding semantics but..</title>
		<link>http://sybersnake.com/2010/07/13/i-know-you-dont-need-to-hear-from-me-regarding-semantics-but/</link>
		<comments>http://sybersnake.com/2010/07/13/i-know-you-dont-need-to-hear-from-me-regarding-semantics-but/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 03:40:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=193</guid>
		<description><![CDATA[The use of &#8216;on&#8217; and &#8216;handle&#8217; seems to daunt me. Some people do it the way I think is correct but most don&#8217;t; so here it is. &#8216;ON&#8217; is used when self or this is the dispatcher of said event you are listening to. If you extend spark Group and listen to Creation Complete then [...]]]></description>
			<content:encoded><![CDATA[<p>The use of &#8216;on&#8217; and &#8216;handle&#8217; seems to daunt me.  Some people do it the way I think is correct but most don&#8217;t; so here it is.</p>
<p>&#8216;ON&#8217; is used when self or this is the dispatcher of said event you are listening to.  If you extend spark Group and listen to Creation Complete then it should be onCreationComplete</p>
<p>but..</p>
<p>&#8220;HANDLE&#8217; if the dispatcher is external.  If Class A is listening to Class B&#8217;s CreationComplete then you should name the internal handler handle{ObjectName}_CreationComplete.</p>
<p>Hope that helps. This will keep your code much easier to read in the future to determine the external and internal dependencies.</p>
<p>That is all!</p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2010/07/13/i-know-you-dont-need-to-hear-from-me-regarding-semantics-but/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create a proper deep clone in AS3</title>
		<link>http://sybersnake.com/2009/07/25/create-a-proper-deep-clone-in-as3/</link>
		<comments>http://sybersnake.com/2009/07/25/create-a-proper-deep-clone-in-as3/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 21:19:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=176</guid>
		<description><![CDATA[I&#8217;ve implemented this in com.emoten.core.data.JKDataObject in EmotenCore.swc The [Transient] metadata is very important. ( keeps it from tying to infinitely clone itself ) I looked elsewhere and it seems that no-one has noticed that the [RemoteClass] metadata is required to reconstruct the class from its AMF-serialized state. ?View Code ACTIONSCRIPT1 2 3 4 5 6 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve implemented this in com.emoten.core.data.JKDataObject in EmotenCore.swc</p>
<p>The [Transient] metadata is very important. ( keeps it from tying to infinitely clone itself )</p>
<p>I looked elsewhere and it seems that no-one has noticed that the [RemoteClass] metadata is required to reconstruct the class from its AMF-serialized state.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p176code3'); return false;">View Code</a> ACTIONSCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1763"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code" id="p176code3"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Transient<span style="color: #66cc66;">&#93;</span>
		<span style="color: #808080; font-style: italic;">/**
		 * Creates a Clone of this class.
		 * &lt;p&gt;
		 * In order for your returned class to be typed correctly you must put the following
		 * above &quot;public class&quot;
		 * 
		 * &lt;code&gt;
		 * [RemoteClass(alias=&quot;com.emoten.core.data.JKDataObject&quot;)]
		 * &lt;/code&gt;
		 * 
		 * Replacing &quot;com.emoten.core.data.JKDataObject&quot; with your class's FQN.
		 * 
		 * @return		A new copy of your class.
		 */</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> clone<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #66cc66;">*</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> ba:ByteArray = <span style="color: #000000; font-weight: bold;">new</span> ByteArray<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			ba.<span style="color: #006600;">writeObject</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">this</span> <span style="color: #66cc66;">&#41;</span>;
			ba.<span style="color: #0066CC;">position</span> = <span style="color: #cc66cc;">0</span>;
			<span style="color: #b1b100;">return</span> ba.<span style="color: #006600;">readObject</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p176code4'); return false;">View Code</a> ACTIONSCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1764"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p176code4"><pre class="actionscript" style="font-family:monospace;">        <span style="color: #66cc66;">&#91;</span>RemoteClass<span style="color: #66cc66;">&#40;</span>alias=<span style="color: #ff0000;">&quot;com.emoten.core.data.JKDataObject&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> JKDataObject <span style="color: #0066CC;">extends</span> JKObject <span style="color: #0066CC;">implements</span> Cloneable</pre></td></tr></table></div>

<p>UPDATE: Krilnon over at Kirupa made a good point I forgot to cover.  The restrictions are that of the AMF specification.  You cannot pass things like DisplayObjects and you cannot have required constructor arguments.  If you don&#8217;t have those, your cool.  The clone() functionality is only really intended for data models.<br />
<a href="http://www.kirupa.com/forum/showpost.php?p=2489122&#038;postcount=597">http://www.kirupa.com/forum/showpost.php?p=2489122&#038;postcount=597</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/07/25/create-a-proper-deep-clone-in-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The replacement of EventDispatcher, 26% faster</title>
		<link>http://sybersnake.com/2009/07/21/the-replacement-of-eventdispatcher-26-faster/</link>
		<comments>http://sybersnake.com/2009/07/21/the-replacement-of-eventdispatcher-26-faster/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 16:03:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=147</guid>
		<description><![CDATA[I designed a pure ActionScript event method following a similar API of JKEvent. In most circumstances it just barely beats out the speed of the native EventDispatcher but EventDispatcher is left in the dust when you start timing the whole event lifecycle: &#8220;connect, dispatch, disconnect, dispatch&#8221;. Cons: You don&#8217;t get priority Pros: You get Silent [...]]]></description>
			<content:encoded><![CDATA[<p>I designed a pure ActionScript event method following a similar API of <a href="http://labs.emoten.com/projects/Juki/Juki%20Event%20Pattern.pdf">JKEvent</a>.  In most circumstances it just barely beats out the speed of the native EventDispatcher but EventDispatcher is left in the dust when you start timing the whole event lifecycle: &#8220;connect, dispatch, disconnect, dispatch&#8221;.
</p>
<p><strong>Cons:</strong>  You don&#8217;t get priority</p>
<p><strong>Pros:</strong> You get Silent Events, Argument Events, Remove All(event connections) from Observer, Remove All(event connections) from Sender.  Its fast.</p>
<p><p><strong>How it works:</strong> Its built using Dictionaries and LinkedLists.  Turned out pretty good since I wrote it last week and never tried to actually run it until now.<br />
<img src="http://sybersnake.com/images/NotificationCenter Performance Results.png" alt="Results" width="100%" height="135" align="left" />
</p>
<p>I recorded a variance of 0.5%+/-.</p>
<p>I licensed EmotenCore under LGPL and it is currently distributed as a compiled library.  <br/><br />
Here is the License: <a href="http://code.google.com/p/jedai/source/browse/trunk/client/docs/license/EmotenCore-License.txt">License</a> Here is the SWC: <a href="http://code.google.com/p/jedai/source/browse/trunk/client/lib/EmotenCore.swc">EmotenCore.swc</a> Here is the docs: <a href="http://labs.emoten.com/projects/EmotenCore/docs/html/">Emoten Core Docs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/07/21/the-replacement-of-eventdispatcher-26-faster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JKAbstractTranslatorLink &amp; JKTranslatorTunnel</title>
		<link>http://sybersnake.com/2009/07/18/jkabstracttranslatorlink-jktranslatortunnel/</link>
		<comments>http://sybersnake.com/2009/07/18/jkabstracttranslatorlink-jktranslatortunnel/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 22:43:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=139</guid>
		<description><![CDATA[I&#8217;ve built this methodology for allowing the easy design and implementation of sequential bi-directional data translation using the InputFlowConnector / InputFlowTerminator interface model. I&#8217;ve uploaded the example here: http://labs.emoten.com/projects/Juki/JKAbstractTranslatorLink/TranslatorTunnelTest.html Note: The Easy User Input Translator does not understand AM/PM. My first reference implementation is using the class JKTranslatorTunnel as a two-way binding mechanism with translation. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve built this methodology for allowing the easy design and implementation of sequential bi-directional data translation using the InputFlowConnector / InputFlowTerminator interface model.</p>
<p>I&#8217;ve uploaded the example here: <a href="http://labs.emoten.com/projects/Juki/JKAbstractTranslatorLink/TranslatorTunnelTest.html">http://labs.emoten.com/projects/Juki/JKAbstractTranslatorLink/TranslatorTunnelTest.html</a><br />
<strong>Note:</strong> The Easy User Input Translator does not understand AM/PM.</p>
<p>My first reference implementation is using the class JKTranslatorTunnel as a two-way binding mechanism with translation.  Essentially it makes a 2-3 line implementation to bind your Model object to some sort of View with translation.  My example is a case where the Model contains a integer property representing Military time and the view displays Standard time.  I&#8217;ve also attached a user-input translator that converts shorthand input to Standard time.  This comes in handy so we can translate shorthand to standard then pass the standard to the translator that will translate that into military time and update the model.  At the same time it will also format the View.</p>
<p>The reference implementation in Flex looks like this.  &#8220;in1&#8243;, &#8220;in2&#8243; are both TextInput UIControls.  JKAbstractTranslatorLink is a LinkedListEntry.  To add many items into the translation link just keep on populating the &#8220;.next&#8221; or &#8220;output&#8221;.<br />
<a href="http://labs.emoten.com/projects/EmotenCore/docs/html/com_emoten_core_data_JKAbstractTranslatorLink.html">Emoten Core Docs</a></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p139code6'); return false;">View Code</a> ACTIONSCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1396"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code" id="p139code6"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>fx:Script<span style="color: #66cc66;">&gt;</span>
        <span style="color: #66cc66;">&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
            <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">emoten</span>.<span style="color: #006600;">core</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">translators</span>.<span style="color: #006600;">JKEasyUserTimeInputTanslatorLink</span>;
            <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">emoten</span>.<span style="color: #006600;">core</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">LinkedList</span>;
            <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">emoten</span>.<span style="color: #006600;">core</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">JKAbstractTranslatorLink</span>;
            <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">emoten</span>.<span style="color: #006600;">core</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">translators</span>.<span style="color: #006600;">JKMilitaryTimeTranslatorLink</span>;
            <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">emoten</span>.<span style="color: #006600;">core</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">JKTranslatorTunnel</span>;
&nbsp;
            protected <span style="color: #000000; font-weight: bold;">var</span> _tunnel:JKTranslatorTunnel;
&nbsp;
            <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> onCompleteEvent<span style="color: #66cc66;">&#40;</span> event:<span style="color: #66cc66;">*</span>=<span style="color: #000000; font-weight: bold;">null</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
            <span style="color: #66cc66;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">var</span> ls:JKAbstractTranslatorLink = <span style="color: #000000; font-weight: bold;">new</span> JKMilitaryTimeTranslatorLink<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
                    ls.<span style="color: #006600;">output</span><span style="color: #66cc66;">&#40;</span> DirectionEnum.<span style="color: #006600;">FORWARD</span>, <span style="color: #000000; font-weight: bold;">new</span> JKEasyUserTimeInputTanslatorLink<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
                _tunnel = <span style="color: #000000; font-weight: bold;">new</span> JKTranslatorTunnel<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">this</span>.<span style="color: #006600;">in1</span>, <span style="color: #ff0000;">&quot;text&quot;</span>, <span style="color: #0066CC;">this</span>.<span style="color: #006600;">in2</span>, <span style="color: #ff0000;">&quot;text&quot;</span>, ls <span style="color: #66cc66;">&#41;</span>;
&nbsp;
&nbsp;
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;</span>
    <span style="color: #66cc66;">&lt;/</span>fx:Script<span style="color: #66cc66;">&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/07/18/jkabstracttranslatorlink-jktranslatortunnel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Override Polymorphism versus me and a pot of coffee.</title>
		<link>http://sybersnake.com/2009/06/20/override-polymorphism-versus-me-and-a-pot-of-coffee/</link>
		<comments>http://sybersnake.com/2009/06/20/override-polymorphism-versus-me-and-a-pot-of-coffee/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 05:56:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=117</guid>
		<description><![CDATA[JIRA SDK-16960 Java explanation of Late-Binding The Issue Subclassing has one purpose, to further specialize. If I want to extend my &#8216;FarmAnimal&#8217; class and call it &#8216;Chicken&#8217; that is specialization. If I extend &#8216;Real-Estate&#8217; with &#8216;Condo&#8217;, that is specialization. So, what if I want to further restrict the acceptable properties of my sub-class? Override polymorphism [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://bugs.adobe.com/jira/browse/SDK-16960">JIRA SDK-16960</a><br />
<a href="http://www.janeg.ca/scjp/overload/poly.html">Java explanation of Late-Binding</a></p>
<p><strong>The Issue</strong><br />
Subclassing has one purpose, to further specialize.  If I want to extend my &#8216;FarmAnimal&#8217; class and call it &#8216;Chicken&#8217; that is specialization.  If I extend &#8216;Real-Estate&#8217; with &#8216;Condo&#8217;, that is specialization.  So, what if I want to further restrict the acceptable properties of my sub-class?  Override polymorphism allows us to redefine a inherited method from our super-class but doesn&#8217;t allow us to sub-specialize the method arguments(parameters) and return type.  Why is this?  If the specialized arguments and return type are fully type-safe against the requirements of the super-class then what is the problem?</p>
<p><strong>The Example</strong><br />
Say my class &#8216;FarmAnimal&#8217; has a method.</p>
<p><code>public clone():FarmAnimal  {}</code></p>
<p>Now, I have a class &#8216;Chicken&#8217; extends &#8216;FarmAnimal&#8217;.  &#8216;Chicken&#8217; has methods associated with it that do not exist in &#8216;FarmAnimal&#8217;.  However, when I call chicken.clone() I still get a class instance typed FarmAnimal.  Which is correct, it returns a Chicken object typed as FarmAnimal because override polymorphism says so.  Now, every time I want to use methods special to Chicken.  I have to retype the object as chicken.</p>
<p><code>chik:Chicken = chicken.clone() as Chicken;</code></p>
<p>This is ok.  Now, what if clone() has a argument.</p>
<p><code>public FarmAnimal clone(mate FarmAnimal) {}</code></p>
<p>Thats cool but a Chicken can&#8217;t mate with a Pig so we&#8217;ve got to do something about this.  Override polymorphism says we can&#8217;t change the arguments.  Wouldn&#8217;t it be awesome if we could just re-define clone() as</p>
<p><code>public clone(mate:Chicken):Chicken {}</code></p>
<p>Well we can&#8217;t. What are our options?  Interfaces have the same restrictions.  We usually end up abandoning polymorphism completely in order to accomplish the task at hand or creating manual type checking on every override to prevent the wrong type of object being passed.  All arguments aside, Chicken is a FarmAnimal so it is theoretically type-safe against the super&#8217;s version of makeSpawn.  I don&#8217;t understand why the rules of polymorphism can&#8217;t be adapted to support this type of behavior.</p>
<p>UPDATE:  Method Overloading as defined by Late-Binding in Java does partially do what I ask but does not hit the nail on the head because, ultimately, the original version is left intact whereas I would want to disallow it completely and would not be compatible when accessing typed as a Interface.</p>
<p>Any ideas?  Hit me up on Twitter.</p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/06/20/override-polymorphism-versus-me-and-a-pot-of-coffee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safari 4 Tabs</title>
		<link>http://sybersnake.com/2009/06/16/safari-4-tabs/</link>
		<comments>http://sybersnake.com/2009/06/16/safari-4-tabs/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 04:28:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=125</guid>
		<description><![CDATA[With Safari 4 final, we lost our beloved top-tabs. However, hope is not lost. All you have to do is replace Safari.app with the beta version (15MB) and you&#8217;ve got your tabs back. Sadly, I cannot host the file so you need to get it some other way.]]></description>
			<content:encoded><![CDATA[<p>With Safari 4 final, we lost our beloved top-tabs.  However, hope is not lost.  All you have to do is replace Safari.app with the beta version (15MB) and you&#8217;ve got your tabs back.  Sadly, I cannot host the file so you need to get it some other way.</p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/06/16/safari-4-tabs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yumm, Vegan Brownies</title>
		<link>http://sybersnake.com/2009/06/01/yumm-vegan-brownies/</link>
		<comments>http://sybersnake.com/2009/06/01/yumm-vegan-brownies/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 05:48:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=107</guid>
		<description><![CDATA[This is an extension of this recipe. Ingredients: 2 cups unbleached all-purpose flour 1 1/4 cup unbleached evaporated cane sugar 3/4 cup brown sugar 3/4 cup unsweetened cocoa powder 1 teaspoon baking powder 1 teaspoon salt 1/2 cup water 1/2 &#8211; 3/4 cup Coconut Milk 1 cup vegetable oil 1 teaspoon vanilla extract 3-4 tablespoon [...]]]></description>
			<content:encoded><![CDATA[<p>This is an extension of <a href="http://allrecipes.com/Recipe-Tools/Print/Recipe.aspx?RecipeID=68436&#038;servings=16">this</a> recipe.</p>
<p><strong>Ingredients:</strong></p>
<ul>
<li>2 cups unbleached all-purpose flour</li>
<li>1 1/4 cup unbleached evaporated cane sugar</li>
<li>3/4 cup brown sugar</li>
<li>3/4 cup unsweetened cocoa powder</li>
<li>1 teaspoon baking powder</li>
<li>1 teaspoon salt</li>
<li>1/2 cup water</li>
<li>1/2 &#8211; 3/4 cup Coconut Milk</li>
<li>1 cup vegetable oil</li>
<li>1 teaspoon vanilla extract</li>
<li>3-4 tablespoon extra creamy peanut butter</li>
<li>1 teaspoon Omega 3 &#038; 6 oil</li>
</ul>
<p>350 degrees, 9&#215;13 pan is about 30 minutes. 8&#215;8 pan is 55 minutes.  And yes, when you mix this it will clump into one massive mix blob instead of a smooth batter you get with off the shelf mixes.  Bake until it passes the penetration test. ( no gunk sticks to whatever your poking the brownies with )</p>
<p>Note: I added a few pieces of baking bittersweet chocolate, being made with Milk Fat turns this recipe into &#8220;Vegetarian&#8221; so I left it out here.</p>
]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/06/01/yumm-vegan-brownies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extending Flex&#8217;s CSS w/Custom Data Types</title>
		<link>http://sybersnake.com/2009/05/18/extending-flexs-css-wcustom-data-types/</link>
		<comments>http://sybersnake.com/2009/05/18/extending-flexs-css-wcustom-data-types/#comments</comments>
		<pubDate>Mon, 18 May 2009 19:54:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>

		<guid isPermaLink="false">http://sybersnake.com/?p=83</guid>
		<description><![CDATA[Comptibility: 3.0+ You can extend CSS&#8217;s basic functionality with Custom Data Types by adding your own code to line: 7808 ( function getStyle(styleProp:String)* ) of mx.core.UIComponent. I recommend doing this by copying paste the original UIComponent class, from your destination version of the Flex framework, into your project under the same package name. This will [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Comptibility:</strong> 3.0+</em></p>
<p>You can extend CSS&#8217;s basic functionality with Custom Data Types by adding your own code to line: 7808 ( function getStyle(styleProp:String)* ) of mx.core.UIComponent.  I recommend doing this by copying paste the original UIComponent class, from your destination version of the Flex framework, into your project under the same package name.  This will allow your version to override the compiled library version.</p>
<p>I&#8217;ve extended CSS with a custom protocol for a library engine I&#8217;ve dubbed &#8216;Fuze&#8217; for the moment.  The implementation of the protocol in the CSS file looks like this:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p83code9'); return false;">View Code</a> CSS</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p839"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p83code9"><pre class="css" style="font-family:monospace;">upSkin					<span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;Fuze(splashelements&gt;ButtonSi)&quot;</span><span style="color: #00AA00;">;</span></pre></td></tr></table></div>

<p>The reason why implementing the override on the UIComponent class is to interject some business logic to your protocol.  In my example, the FuzeService takes the protocol and returns the proper library item.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p83code10'); return false;">View Code</a> ACTIONSCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8310"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code" id="p83code10"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span>styleProp:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #66cc66;">*</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> ret:<span style="color: #66cc66;">*</span> = StyleManager.<span style="color: #006600;">inheritingStyles</span><span style="color: #66cc66;">&#91;</span>styleProp<span style="color: #66cc66;">&#93;</span> ?
                            _inheritingStyles<span style="color: #66cc66;">&#91;</span>styleProp<span style="color: #66cc66;">&#93;</span> :
                            _nonInheritingStyles<span style="color: #66cc66;">&#91;</span>styleProp<span style="color: #66cc66;">&#93;</span>;
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> ret is <span style="color: #0066CC;">String</span> <span style="color: #66cc66;">&amp;&amp;</span> <span style="color: #66cc66;">&#40;</span>ret as <span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #ff0000;">&quot;fuze(&quot;</span> <span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>FuzeService.<span style="color: #006600;">hasLoaded</span><span style="color: #66cc66;">&#40;</span> ret <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #808080; font-style: italic;">// Cache it here.</span>
            <span style="color: #000000; font-weight: bold;">var</span> clz:<span style="color: #000000; font-weight: bold;">Class</span> = FuzeService.<span style="color: #006600;">getDefinitionByURI</span><span style="color: #66cc66;">&#40;</span> ret <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> StyleManager.<span style="color: #006600;">inheritingStyles</span><span style="color: #66cc66;">&#91;</span>styleProp<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>
                _inheritingStyles<span style="color: #66cc66;">&#91;</span>styleProp<span style="color: #66cc66;">&#93;</span> = clz;
            <span style="color: #b1b100;">else</span>
                _nonInheritingStyles<span style="color: #66cc66;">&#91;</span>styleProp<span style="color: #66cc66;">&#93;</span> = clz
&nbsp;
            <span style="color: #b1b100;">return</span> clz;
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #b1b100;">else</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #0066CC;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> IllegalArgumentException<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;The Requested Fuze Dynamic Skin Library Has Not Yet Loaded, Please check your code to make sure the library has loaded before you initialize any mx.* components using the CSS Fuze extension &quot;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> ret;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://sybersnake.com/2009/05/18/extending-flexs-css-wcustom-data-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
