<?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>MikeCann.co.uk &#187; Framework - MikeCann.co.uk - mikey see, mikey do!</title>
	<atom:link href="http://mikecann.co.uk/tag/framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikecann.co.uk</link>
	<description>mikey see, mikey do!</description>
	<lastBuildDate>Sat, 28 Jan 2012 13:10:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Funk IoC &#8211; A New Dependency Injection Framework</title>
		<link>http://mikecann.co.uk/flash/funk-ioc-a-new-dependency-injection-framework/</link>
		<comments>http://mikecann.co.uk/flash/funk-ioc-a-new-dependency-injection-framework/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 20:17:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Functional]]></category>
		<category><![CDATA[Funk]]></category>
		<category><![CDATA[Impressive]]></category>
		<category><![CDATA[IoC]]></category>
		<category><![CDATA[Robot Legs]]></category>
		<category><![CDATA[Swift Suspenders]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=1020</guid>
		<description><![CDATA[Twitter can be a funny beast, what makes it great can also make it poor. I use Twhirl which keeps me updated any time one of the people I follow tweets about something, the only problem is that so many people tweet that if I dont happen to see it within about and hour or so of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/04/ScreenHunter_01-Apr.-08-20.11.gif"><img class="alignnone size-full wp-image-1023" title="ScreenHunter_01 Apr. 08 20.11" src="http://mikecann.co.uk/wp-content/uploads/2010/04/ScreenHunter_01-Apr.-08-20.11.gif" alt="" width="710" height="164" /></a></p>
<p>Twitter can be a funny beast, what makes it great can also make it poor. I use <a href="http://www.twhirl.org/">Twhirl </a>which keeps me updated any time one of the people I follow tweets about something, the only problem is that so many people tweet that if I dont happen to see it within about and hour or so of the Tweet, ill miss it. This time however I was lucky enough to catch a tweet by <a href="http://twitter.com/joa">@Joa</a> about his new Inversion of Control and functional-programming-like library, <a href="http://code.google.com/p/funk-as3/">Funk AS3</a>.</p>
<p>As I have been getting well into <a href="http://www.robotlegs.org/">RobotLegs</a> (a Dependency Injection MVCS framework) recently I was extremely interested to hear about this new project by Joa who I respect very much as a brilliant coder not least because of his excellent work on low-level Flash byte-code optimisation (see <a href="http://code.google.com/p/apparat/">Apparat</a>).</p>
<p>Joa has taken a different approach to doing dependency injection. The approach most frequently used (and the one used in SwiftSuspenders / RobotLegs) is to use meta-data to declare to a number of variables for injection. You then map a class to be injected and instantiate it using the injector.</p>
<p>As an example, with Swift Suspenders you would define a class for injection with something like the following:</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">class</span> MyInjectedClass</div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> sayHello<span class="br0">&#40;</span>toSay<span class="sy0">:</span><a href="http://www.google.com/search?q=string%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:string.html"><span class="kw5">String</span></a><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">		<span class="kw7">trace</span><span class="br0">&#40;</span><span class="st0">&quot;Hello &quot;</span><span class="sy0">+</span>toStay<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">var</span> injector <span class="sy0">:</span> Injector = <span class="kw1">new</span> Injector<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">injector<span class="sy0">.</span>mapSingleton<span class="br0">&#40;</span>MyInjectedClass<span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div></div>
<p>Here we are telling the Injector to make a single instance of our class and hold it internally ready for when it is next requested, such as:</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">class</span> MyDependantClass</div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#91;</span>Inject<span class="br0">&#93;</span> <span class="kw1">public</span> <span class="kw2">var</span> myClass <span class="sy0">:</span> MyInjectedClass<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> performAction<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">		myClass<span class="sy0">.</span>sayHello<span class="br0">&#40;</span><span class="st0">&quot;World&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>Here the [Inject] meta-data indicates that we want the framework to supply the class with an instance of type MyInjectedClass. The final part is to make an instance of the dendant class and inject into it:</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> dependant <span class="sy0">:</span> MyDependantClass = <span class="kw1">new</span> MyDependantClass<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">injector<span class="sy0">.</span>injectInto<span class="br0">&#40;</span>dependant<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">dependant<span class="sy0">.</span>performAction<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div></div>
<p>As you can see this is a nice way of handling inter-module dependencies in your code, when coupled with a MVC framework such as RobotLegs it becomes and extremely powerful yet elegant way of coding.</p>
<p>It however isnt perfect and Joa, on his <a href="http://code.google.com/p/funk-as3/wiki/IoC">google code page</a> mentions three drawbacks of this method:</p>
<ul>
<blockquote>
<li>Your injected properties are publicly exposed and mutable.</li>
<li>describeType is very expensive.</li>
<li>Steep learning curve.</li>
</blockquote>
</ul>
<p>This is where he suggests his alternative method, which is quite ingenious. Using the same example as above you would see something like the following:</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">class</span> MyInjectedClass</div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> sayHello<span class="br0">&#40;</span>toSay<span class="sy0">:</span><a href="http://www.google.com/search?q=string%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:string.html"><span class="kw5">String</span></a><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">		<span class="kw7">trace</span><span class="br0">&#40;</span><span class="st0">&quot;Hello &quot;</span><span class="sy0">+</span>toStay<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">bind<span class="br0">&#40;</span>MyInjectedClass<span class="br0">&#41;</span><span class="sy0">.</span>asSingleton<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div></div>
<p>Then the dependant class would look like the following:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">class</span> MyInjectedClass</div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">protected</span> <span class="kw2">var</span> myClass <span class="sy0">:</span> MyInjectedClass = inject<span class="br0">&#40;</span>MyInjectedClass<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> performAction<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">		myClass<span class="sy0">.</span>sayHello<span class="br0">&#40;</span><span class="st0">&quot;World&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>And making an instance of it could be as simple as:</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> dependant <span class="sy0">:</span> MyDependantClass = <span class="kw1">new</span> MyDependantClass<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">dependant<span class="sy0">.</span>performAction<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div></div>
<p>As can be seen there are some benefits to this method, the biggest one in my opinion is that injected properties dont have to be public as they are provided by the call from within the class scope rather than from outside.</p>
<p>So how does Joa perform this magic? By abusing a little used ability of the Actionscript programming language known as package-level-functions. These are throwbacks from the old AS1 &amp; AS2 days of global functions. There are actually a couple of common examples in AS3 still such as getTimer() and getQualifiedClassName() still used. What Joa has done is to use these package level functions as a method of generating concise looking code reminiscent of functional programming.</p>
<p>Performance wise, im not entirely sure whether by using package-level functions instead of describeType() calls used in meta-data driven IoC frameworks is any faster as Till Schneidereit of Swift Suspenders suggests:</p>
<blockquote><p>I don&#8217;t think that Funk&#8217;s approach is any faster than an optimized<br />
metadata-based IoC container: describeType may be slow (as in &#8220;takes a<br />
few dozen microseconds to run&#8221;), but is only ever called once for each<br />
class an instance of which is injected into. After that, it&#8217;s just a<br />
straight iteration over an array for all injection points instead of<br />
Funk&#8217;s multiple method calls for each injection point.</p></blockquote>
<p>So the next step for me is to run some tests to see how things pan out. Either way im very impressed with both approaches and cant wait to see what kind of exciting advances will be developed in the coming months.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/flash/funk-ioc-a-new-dependency-injection-framework/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>RobotLegs MVCS Relationship Diagram</title>
		<link>http://mikecann.co.uk/programming/robotlegs-mvcs-relationship-diagram/</link>
		<comments>http://mikecann.co.uk/programming/robotlegs-mvcs-relationship-diagram/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 18:17:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Robot Legs]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=954</guid>
		<description><![CDATA[Just as a follow up from my post on the bleeding edge I thought I would post a rather interesting image @srivello made and @jhooks shared. Its a relationship between the main components in the MVCS meta-framework in RobotLegs. Its pretty good for anyone that (like me) preferrs to see a diagram when trying to [...]]]></description>
			<content:encoded><![CDATA[<p>Just as a follow up from my post <a href="http://www.mikecann.co.uk/programming/on-the-bleeding-edge/">on the bleeding edge</a> I thought I would post a rather interesting image @srivello made and @jhooks shared. Its a relationship between the main components in the MVCS meta-framework in <a href="http://www.robotlegs.org">RobotLegs</a>. Its pretty good for anyone that (like me) preferrs to see a diagram when trying to grasp the concept of a new framework:</p>
<p>(click to enlarge)</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_01-Mar.-23-15.51.jpg"><img class="alignnone size-full wp-image-955" title="ScreenHunter_01 Mar. 23 15.51" src="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_01-Mar.-23-15.51.jpg" alt="" width="655" height="445" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/programming/robotlegs-mvcs-relationship-diagram/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jessie Warden &#8211; Flash &amp; Flex Videos</title>
		<link>http://mikecann.co.uk/fun-videos/jessie-warden-flash-flex-videos/</link>
		<comments>http://mikecann.co.uk/fun-videos/jessie-warden-flash-flex-videos/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 13:17:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fun & Videos]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=884</guid>
		<description><![CDATA[Thought id mention these videos as I have been watching them and really like the content. They are a series of video blog posts by one of the &#8216;celebrities&#8217; of the Flash and Flex world, in which he talks about lots of stuff related to whats going on in the industry and the various frameworks [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/02/ScreenHunter_01-Feb.-02-13.15.gif"><img class="alignnone size-full wp-image-885" title="ScreenHunter_01 Feb. 02 13.15" src="http://mikecann.co.uk/wp-content/uploads/2010/02/ScreenHunter_01-Feb.-02-13.15.gif" alt="" width="470" height="368" /></a></p>
<p>Thought id mention these videos as I have been watching them and really like the content. They are a series of video blog posts by one of the &#8216;celebrities&#8217; of the Flash and Flex world, in which he talks about lots of stuff related to whats going on in the industry and the various frameworks he uses or recommends (or doesnt). He also has a few things to say about beer, which is a bonus!</p>
<p>Anyways theres three of them so far, and can be watched over on his <a href="http://jessewarden.com/">blog</a>:</p>
<p><a href="http://">1 vs Many, Mediator vs Presenter, 30 mins – JXLTV – Episode #1</a><br />
<a href="http://jessewarden.com/2010/01/conferences-why-frameworks-cairngorm-3-jxltv-episode-2.html"> Conferences, Why Frameworks, Cairngorm 3 – JXLTV – Episode #2</a><br />
<a href="http://jessewarden.com/2010/01/apples-ipad-html5-video-gaia-flash-framework-jxltv-episode-3.html"> Apple’s iPad, HTML5 Video, Gaia Flash Framework – JXLTV – Episode #3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/fun-videos/jessie-warden-flash-flex-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audio Book Organiser v1.2.0</title>
		<link>http://mikecann.co.uk/personal-projects/audio-book-organiser-v1-2-0/</link>
		<comments>http://mikecann.co.uk/personal-projects/audio-book-organiser-v1-2-0/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 18:37:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Audiobook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=826</guid>
		<description><![CDATA[Just did a quick update to the audio book organiser. Added the ability to move the storage database file. This was so that I can put my storage file on Dropbox and it will then be backedup and synced between machines. New version and sources: Please upgrade your Flash Player This is the content that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_01-Jan.-09-18.34.jpg"><img class="alignnone size-full wp-image-827" title="ScreenHunter_01 Jan. 09 18.34" src="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_01-Jan.-09-18.34.jpg" alt="ScreenHunter_01 Jan. 09 18.34" width="605" height="359" /></a></p>
<p>Just did a quick update to the audio book organiser. Added the ability to move the storage database file. This was so that I can put my storage file on Dropbox and it will then be backedup and synced between machines.</p>
<p>New version and sources:</p>
<p style="text-align: center;"><div id="flashcontent4377" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://mikecann.co.uk/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://mikecann.co.uk/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "Audio+Book+Orgainser");
so.addVariable("appurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser.air");
so.addVariable("appid", "Audio+Book+Orgainser");
so.addVariable("pubid", "");
so.addVariable("appversion", "1");
so.addVariable("imageurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/badgeImg.jpg");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent4377");
// ]]&gt; -->
</script>
</p>
<p style="text-align: center;">
<p>Source: <a href="http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v120_source.zip">http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v120_source.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/audio-book-organiser-v1-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audio Book Organiser (AIR, Mate, Flex 4)</title>
		<link>http://mikecann.co.uk/personal-projects/audio-book-organiser-air-mate-flex-4/</link>
		<comments>http://mikecann.co.uk/personal-projects/audio-book-organiser-air-mate-flex-4/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 12:38:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Audiobook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=807</guid>
		<description><![CDATA[Well its been a fun Christmas, I have eaten and drunk to the point that im going to be running it off in the gym till next christmas. Although there has been merryment abound, the keyboard couldn&#8217;t keep me away. Its probably okay to say this now as im not under any secrecy act; I [...]]]></description>
			<content:encoded><![CDATA[<p>Well its been a fun Christmas, I have eaten and drunk to the point that im going to be running it off in the gym till next christmas.</p>
<p>Although there has been merryment abound, the keyboard couldn&#8217;t keep me away. Its probably okay to say this now as im not under any secrecy act; I have decided to leave Massively Multimedia in Manchester to join a new startup called Ideas Pad in Wilmslow (just south of Manchester).</p>
<p>I cant say too much about exactly what I will be working on just yet but I can say that it will involve my experience in the Flash world. Specifically, I will be working in Adobe Flex again on some fairly sizeable projects. For this reason I wanted to brush up on my Flex as there has been a new release of the IDE (now named Flash Builder) and the SDK.</p>
<p>In addition I wanted to look at the various frameworks in use for Flex these days. I have used the usual Cairngorm, PureMVC before however I stumbled accross a new one called Mate (pronounced mah-tay, like the drink). Mate looked very interesting to me so before I jumped two feet in and used it in a commercial project I wanted to give it a spin in a simple project first.</p>
<p>Finally we get to the point of this post. I have developed a simple Adobe AIR application that allows you to organise audio books. The basic idea is simple you give the application a selection of &#8216;source&#8217; directories where your audiobooks belong then you can tick off whether you have listened to each one, and what rating you would give them.</p>
<p style="text-align: center;"><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_02-Dec.-30-12.32.jpg"><img class="size-medium wp-image-813 alignnone" title="ScreenHunter_02 Dec. 30 12.32" src="http://www.mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_02-Dec.-30-12.32-300x262.jpg" alt="ScreenHunter_02 Dec. 30 12.32" width="300" height="262" /></a><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_03-Dec.-30-12.32.jpg"><img class="size-medium wp-image-814 alignnone" title="ScreenHunter_03 Dec. 30 12.32" src="http://www.mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_03-Dec.-30-12.32-300x261.jpg" alt="ScreenHunter_03 Dec. 30 12.32" width="300" height="261" /></a></p>
<p>The data is persisted to a file that is saved to your hard drive, so when you open the application up again next time it remembers which audio books you have listened to and what ratings you gave them.</p>
<p>I havent tested it very much atall so there is a very high likelyhood of being some strange bugs in there. I am also releasing all the source code for this project for all to see, use and study if they so wish.</p>
<p style="text-align: center;"><div id="flashcontent2590" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://mikecann.co.uk/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://mikecann.co.uk/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "Audio+Book+Orgainser");
so.addVariable("appurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser.air");
so.addVariable("appid", "Audio+Book+Orgainser");
so.addVariable("pubid", "");
so.addVariable("appversion", "1");
so.addVariable("imageurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/badgeImg.jpg");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent2590");
// ]]&gt; -->
</script>
</p>
<p style="text-align: center;">
<p>Source: <a href="http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v101_source.zip">http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v101_source.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/audio-book-organiser-air-mate-flex-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

