<?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>Richard Lord</title>
	<atom:link href="http://www.richardlord.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.richardlord.net</link>
	<description>Actionscript/Flex, PHP and Java developer</description>
	<lastBuildDate>Thu, 26 Aug 2010 17:32:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Flint Particles 2.2.0 released</title>
		<link>http://www.richardlord.net/blog/flint-particles-2-2-0-released</link>
		<comments>http://www.richardlord.net/blog/flint-particles-2-2-0-released#comments</comments>
		<pubDate>Thu, 26 Aug 2010 17:28:31 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Flint]]></category>
		<category><![CDATA[Particles]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=706</guid>
		<description><![CDATA[<p>Yesterday I released version 2.2.0 of <a href="http://flintparticles.org">Flint Particles</a>. This version includes a new feature enabling collisions between particles and zones. Since zones can represent any shape, that means particles can collide with other objects provided a zone is defined to match (or approvimately match) the shape of the object.</p>

<p>Here's a simple example of these collisions in action</p>

<p><a href="http://flintparticles.org/examples/pachinko">View the source</a></p>

<p>Full details of what is new in this version are <a href="http://flintparticles.org/blog/version-2-2-0-released">on the Flint website</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I released version 2.2.0 of <a href="http://flintparticles.org">Flint Particles</a>. This version includes a new feature enabling collisions between particles and zones. Since zones can represent any shape, that means particles can collide with other objects provided a zone is defined to match (or approvimately match) the shape of the object.</p>

<p>Here&#8217;s a simple example of these collisions in action</p>

<div class="spaced"><div id="swf4c80ef681e70b">
<p><b>Flash required:</b> You need version 9 or later of the free Flash player from Adobe to use this content. To download and install the free player from Adobe's web site <a href="http://get.adobe.com/flashplayer/">click here</a>.</p>
</div>
<script type="text/javascript">
var params = {loop:"false",quality:"high",allowfullscreen:"true"};
var flashvars = {};
swfobject.embedSWF("http://flintparticles.org/source/examples2D/Pachinko/PureAS3/Pachinko.swf", "swf4c80ef681e70b", "480", "425", "9.0.124", "/images/swf/expressInstall.swf", flashvars, params, {} );
</script></div>

<p><a href="http://flintparticles.org/examples/pachinko">View the source</a></p>

<p>Full details of what is new in this version are <a href="http://flintparticles.org/blog/version-2-2-0-released">on the Flint website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/flint-particles-2-2-0-released/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spring Actionscript example project with source</title>
		<link>http://www.richardlord.net/blog/flexcaster-spring</link>
		<comments>http://www.richardlord.net/blog/flexcaster-spring#comments</comments>
		<pubDate>Wed, 09 Jun 2010 13:50:54 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[SpringActionscript]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=680</guid>
		<description><![CDATA[<p>In preparation for my session at <a href="http://www.gotoandski.com/">gotoAndSki</a> I have created a <a href="http://www.springactionscript.org/">Spring Actionscript</a> version of my frameworks example application. The Spring Actionscript developers have released a version 1 release candidate and it's time to include it in these comparisons.</p>

<p>For this Spring Actionscript example I've used exactly the same project as in the previous examples for other frameworks. Like many of the newer frameworks, Spring Actionscript is not prescriptive about your application's architecture so I've used a similar MVC architecture to the one in my Swiz example.</p>]]></description>
			<content:encoded><![CDATA[<p>In preparation for my session at <a href="http://www.gotoandski.com/">gotoAndSki</a> I have created a <a href="http://www.springactionscript.org/">Spring Actionscript</a> version of my frameworks example application. The Spring Actionscript developers have released a version 1 release candidate and it&#8217;s time to include it in these comparisons.</p>

<p>For this Spring Actionscript example I&#8217;ve used exactly the same project as in the previous examples for other frameworks. Like many of the newer frameworks, Spring Actionscript is not prescriptive about your application&#8217;s architecture so I&#8217;ve used a similar MVC architecture to the one in my Swiz example.</p>

<p>The example is below. Links to the other versions follow. All versions have identical functionality. Right click on the swf to view the source.</p>

<div class="spaced"><div id="swf4c80ef681fde7">
<p><b>Flash required:</b> You need version 9 or later of the free Flash player from Adobe to use this content. To download and install the free player from Adobe's web site <a href="http://get.adobe.com/flashplayer/">click here</a>.</p>
</div>
<script type="text/javascript">
var params = {loop:"false",quality:"high",allowfullscreen:"true"};
var flashvars = {};
swfobject.embedSWF("/images/blog/flexcaster/Flexcaster_spring.swf", "swf4c80ef681fde7", "400", "500", "9.0.124", "/images/swf/expressInstall.swf", flashvars, params, {} );
</script></div>

<p>The other versions can be viewed here&#8230;</p>
<ul>
<li><a href="flexcaster-flex3">Flexcaster no framework project source</a></li>
<li><a href="flexcaster-cairngorm">Flexcaster Cairngorm project source</a></li>
<li><a href="flexcaster-puremvc">Flexcaster PureMVC project source</a></li>
<li><a href="flexcaster-mate">Flexcaster Mate project source</a></li>
<li><a href="flexcaster-swiz">Flexcaster Swiz project source</a></li>
<li><a href="flexcaster-parsley">Flexcaster Parsley project source</a></li>
<li><a href="flexcaster-robotlegs">Flexcaster Robotlegs project source</a></li>
<li><a href="flexcaster-smartysignals">Flexcaster SmartyPants-ioc and As3-signals project source</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/flexcaster-spring/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What project will replace the Flex framework?</title>
		<link>http://www.richardlord.net/blog/what-project-will-replace-the-flex-framework</link>
		<comments>http://www.richardlord.net/blog/what-project-will-replace-the-flex-framework#comments</comments>
		<pubDate>Tue, 13 Apr 2010 14:58:47 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Reflex]]></category>
		<category><![CDATA[Robotlegs]]></category>
		<category><![CDATA[Swiz]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=534</guid>
		<description><![CDATA[<p>In <a href="/blog/is-the-flash-platform-waiting-for-a-spring-moment">my previous post</a> I discussed the idea that a project might emerge to replace the Flex framework, in a similar manner to Spring replacing EJB in the Java world. Although I am not in a position to predict what that project will be, I did mention some characteristics that I think the project will have. They were</p>

<ol>
<li>It will start as something simple, with a strong foundation and the potential to grow.</li>
<li>It will have some very strong developers at its core.</li>
<li>It will have at least one project member with an ability to market effectively to the developer community.</li>
<li>It will be open source.</li>
<li>Its roadmap will develop through open discussion with the community.</li>
<li>It will have a very active developer community around it.</li>
<li>It's probably a project that has already begun.</li>
</ol>

<p>I can think of three excellent projects that meet most or all of these criteria. Whether any of them will one day replace the flex framework depends on many things, including in two cases whether the developers would even want to do such a thing. Here are the projects...</p>]]></description>
			<content:encoded><![CDATA[<p>In <a href="/blog/is-the-flash-platform-waiting-for-a-spring-moment">my previous post</a> I discussed the idea that a project might emerge to replace the Flex framework, in a similar manner to Spring replacing EJB in the Java world. Although I am not in a position to predict what that project will be, I did mention some characteristics that I think the project will have. They were</p>

<ol>
<li>It will start as something simple, with a strong foundation and the potential to grow.</li>
<li>It will have some very strong developers at its core.</li>
<li>It will have at least one project member with an ability to market effectively to the developer community.</li>
<li>It will be open source.</li>
<li>Its roadmap will develop through open discussion with the community.</li>
<li>It will have a very active developer community around it.</li>
<li>It&#8217;s probably a project that has already begun.</li>
</ol>

<p>I can think of three excellent projects that meet most or all of these criteria. Whether any of them will one day replace the flex framework depends on many things, including in two cases whether the developers would even want to do such a thing. Here are the projects.</p>

<h3>Reflex</h3>

<p>The most obvious candidate is <a href="http://reflex.io/">Reflex</a>. It actually styles itself as a Flex replacement. It&#8217;s also not a first generation project, having evolved from <a href="http://blog.benstucki.net/">Ben Stucki</a>&#8216;s experiences developing <a href="http://code.google.com/p/openflux/">OpenFlux</a> and <a href="http://jacwright.com/">Jacob</a> &#038; <a href="http://www.xtyler.com/">Tyler</a> Wright&#8217;s experiences developing the <a href="http://www.flightxd.com/flightframework/">Flight Framework</a>. Reflex is designed as a straight improvement on the way Flex is designed. A key element in this is the use of containment rather than inheritance when creating the component architecture.</p>

<p>The result is aiming to be a simplified, lightweight, extendible component architecture with core features from Flex like MXML and CSS all in a tiny (~50kB) package.</p>

<p>The project is in its early stages but appears to be progressing well. The three core developers are all experienced and talented. Ben knows how to make a noise in the development community so they have that angle covered too.</p>

<h3>Robotlegs</h3>

<p>Like the original Spring for Java, <a href="http://www.robotlegs.org/">Robotlegs</a> (which is built on top of <a href="http://github.com/tschneidereit/SwiftSuspenders">SwiftSuspenders</a>) is a lightweight architecture built around a dependency injection container. Currently it complements the Flex framework, but if, like Spring, Robotlegs grew to cover more aspects of development it could perhaps be the foundation for a new approach to simplifying the development process. Put simply, maybe dependency injection could be the foundation for a component architecture.</p>

<p>Robotlegs was founded by <a href="http://shaun.boyblack.co.za/blog/">Shaun Smith</a> and it has skilled developers, an active and open community and, in <a href="http://joelhooks.com/">Joel Hooks</a>, at least one developer who has an aptitude for promoting the project to the wider world. Moving beyond an elegant micro-architecture into the world of Flex replacement therapy would be a big leap but I suspect the Robotlegs team would be up for it if they want the challenge.</p>

<h3>Swiz</h3>

<p><a href="http://swizframework.org/">Swiz</a> started life as a personal project for <a href="http://cdscott.blogspot.com/">Chris Scott</a>, but has evolved into a community project with a number of strong developers. It&#8217;s also changed at its core from a dependency injection based lightweight architecture to a metadata processing architecture, with a dependency injection container and event bus architecture built atop it. This puts Swiz in a position to build an architecture around metadata as well as Actionscript/MXML/CSS. Adding additional metadata processors to the Swiz toolset might open up new architectures to replace the traditional Flex model.</p>

<p>Swiz has had issues with documentation (it&#8217;s limited and updated intermittently) but the team are getting better at telling the community what&#8217;s going on and what their roadmap is, and they are quick to respond to questions which mitigates many of the documentation issues.</p>

<h3>Only three?</h3>

<p>There are other projects I could have mentioned but from those I know these three most closely match my criteria above. I also like and am excited by all three of these projects.</p>

<p>What would be your candidate for a project with a bright future and the potential to grow into a Flex replacement?</p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/what-project-will-replace-the-flex-framework/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Is The Flash Platform waiting for a Spring moment?</title>
		<link>http://www.richardlord.net/blog/is-the-flash-platform-waiting-for-a-spring-moment</link>
		<comments>http://www.richardlord.net/blog/is-the-flash-platform-waiting-for-a-spring-moment#comments</comments>
		<pubDate>Thu, 08 Apr 2010 12:59:31 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=525</guid>
		<description><![CDATA[<p>I've dipped my toe back in the Java world recently, and I'm reminded of some interesting Java history that may be echoed in Flash's future.</p>

<p>Back in the distant mist of Java's past, most large Java web projects were built using something called <a href=”http://en.wikipedia.org/wiki/Enterprise_JavaBean”>Enterprise JavaBeans</a>. EJB was a complex framework developed by Sun, the developers of Java itself (with some input from IBM). EJB had a number of good things going for it, but some developers also thought that the architecture and APIs were too complex.</p>

<p>Then a smart guy called Rod Johnson wrote <a href="http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/">a book about an idea</a>, and he created <a href="http://www.springsource.org/about">a small framework called Spring</a> to illustrate that idea, and the Java world started to change...</p>]]></description>
			<content:encoded><![CDATA[<h3>Background</h3>

<p>I&#8217;ve dipped my toe back in the Java world recently, and I&#8217;m reminded of some interesting Java history that may be echoed in Flash&#8217;s future.</p>

<p>Back in the distant mist of Java&#8217;s past, most large Java web projects were built using something called <a href=”http://en.wikipedia.org/wiki/Enterprise_JavaBean”>Enterprise JavaBeans</a>. EJB was a complex framework developed by Sun, the developers of Java itself (with some input from IBM). EJB had a number of good things going for it, in particular</p>
<ul>
<li>It had respected advocates in Sun and IBM</li>
<li>It addressed some real and difficult problems</li>
</ul>
<p>but some developers also thought that the architecture and APIs were too complex.</p>

<p>Then a smart guy called Rod Johnson wrote <a href="http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/">a book about an idea</a>, and he created <a href="http://www.springsource.org/about">a small framework called Spring</a> to illustrate that idea, and the Java world started to change. Now, EJB is no longer the de-facto standard in the Java world. A smaller, lighter, more agile, more flexible framework called Spring has taken over. There are some who still use EJB (and EJB has become smaller and lighter in response to Spring&#8217;s success) but Spring is the framework in demand.</p>

<h3>What has all this to do with Flash?</h3>

<p>Replace Java with Flash, replace Sun with Adobe, and replace EJB with Flex and you might see a parallel in which Flash is ripe for a smaller, lighter, more agile, more flexible framework than Flex.</p>

<p>That shouldn&#8217;t be seen as a suggestion that Flex is rubbish – far from it. I use Flex every day and am often amazed at how good it is. Yet just as often I&#8217;m annoyed by its faults. Because Flex isn&#8217;t perfect, and its imperfections run very deep. All the new stuff in Flex 4 is great (most of it at least), but it keeps getting bigger, more unwieldy, more complicated.</p>

<p>So I suggest that, as with Java and EJB a few years ago, Flash is ready for a newer, lighter framework to evolve to replace Flex. I don&#8217;t know what that framework is but I suspect it will have most of the following attributes</p>
<ol>
<li>It will start as something simple, with a strong foundation and the potential to grow.</li>
<li>It will have some very strong developers at its core.</li>
<li>It will have at least one project member with an ability to market effectively to the developer community.</li>
<li>It will be open source.</li>
<li>Its roadmap will develop through open discussion with the community.</li>
<li>It will have a very active developer community around it.</li>
<li>It&#8217;s probably a project that has already begun.</li>
</ol>
<p>It may be one project, or it may be a merger of many. Maybe it&#8217;s that little project you&#8217;ve been working on in your spare time. Whatever it is, I suspect a couple of years from now we&#8217;ll have a serious alternative to rival the Flex framework.</p>

<p>There is also <a href="/blog/what-project-will-replace-the-flex-framework">a follow-up post looking at some projects that might evolve to replace Flex</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/is-the-flash-platform-waiting-for-a-spring-moment/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Transforming the designer-developer workflow</title>
		<link>http://www.richardlord.net/blog/transforming-the-designer-developer-workflow</link>
		<comments>http://www.richardlord.net/blog/transforming-the-designer-developer-workflow#comments</comments>
		<pubDate>Tue, 16 Mar 2010 17:58:42 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[360Flex]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Signals]]></category>
		<category><![CDATA[SmartyPants]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=505</guid>
		<description><![CDATA[<p>Here are the slides and example code from my presentation, Transforming the designer-developer workflow, at 360&#124;Flex San Jose on 8th March 2010...</p>]]></description>
			<content:encoded><![CDATA[<p>Here are the slides from my presentation, Transforming the designer-developer workflow, shown at 360|Flex San Jose on 8th March 2010.</p>

<p style="text-align:center"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=360flex-2010-100312133322-phpapp01&#038;rel=0&#038;stripped_title=transforming-the-designerdeveloper-workflow-3413021" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=360flex-2010-100312133322-phpapp01&#038;rel=0&#038;stripped_title=transforming-the-designerdeveloper-workflow-3413021" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>

<p style="text-align:center"><a href="/files/360FlexSJ10CodeExample.zip"><b>Download the example code</b></a></p>
<p>The <a href="/files/360FlexSJ10CodeExample.zip">example code</a> is a set of smart components implementing this architecture and designed for building a Twitter client. Also included is an example of their use. This code was used during the presentation.</p>

<p>Links:</p>
<ul>
<li><a href="http://github.com/sophistifunk/SmartyPants-IOC">SmartyPants-IOC</a></li>
<li><a href="http://github.com/robertpenner/as3-signals">As3-Signals</a></li>
<li><a href="http://github.com/srohde/Twitter">AS3 OAuth Twitter Library</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/transforming-the-designer-developer-workflow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My 360&#124;Flex presentation</title>
		<link>http://www.richardlord.net/blog/my-360flex-presentation</link>
		<comments>http://www.richardlord.net/blog/my-360flex-presentation#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:25:04 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[360Flex]]></category>
		<category><![CDATA[Smart Components]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=479</guid>
		<description><![CDATA[<p>Until recently, the title for my <a href="http://www.360flex.com/">360&#124;Flex San Jose</a> presentation next month was “Designer Last Development Architecture”. But that has just changed...</p>]]></description>
			<content:encoded><![CDATA[<p align="center">“What&#8217;s in a name? That which we call a rose
By any other name would smell as sweet.”
- W. Shakespeare</p>

<p>Until recently, the title for my <a href="http://www.360flex.com/">360|Flex San Jose</a> presentation next month was “Designer Last Development Architecture”. But that has just changed.</p>

<p>In <a href="http://www.amazon.com/gp/product/0596801998?tag=biro-20">“Confessions of a Public Speaker”</a> Scott Berkun says “Start with a strong title”. I wish he&#8217;d told me that sooner. “Designer Last Development Architecture” is not a strong title. It&#8217;s more like a jumble of words. Fortunately, it&#8217;s not too late to change it.</p>

<p>While planning the presentation, two alternative titles have occurred to me.</p>

<p align="center"><b>Empowering your designers with smart components</b></p>

<p>This title sounds strong. But it&#8217;s still not right unless you know what smart components are, and since that&#8217;s a name I made up it&#8217;s unlikely you will know.</p>

<p align="center"><b>Transforming the designer-developer workflow</b></p>

<p>This gets to the heart of what the session is about. It also uses terms that most readers will understand, which is always a good idea.</p>

<p>It does leave out the technical aspects of architecture, components and code (I&#8217;ll be doing some live coding to show you how easy this architecture is to work with), but since 360|Flex is a technical conference, I trust you&#8217;ll expect lots of code anyway.</p>

<p>Perhaps the strongest way to express what my presentation will be about is with a picture.</p>

<div align="center"><img src="/images/blog/ddw.png" width="510" height="279"/></div>

<p>And that&#8217;s the transformation I&#8217;ll be talking about, with architecture, code, and anecdotes from my own experience.</p>

<p>So at 360|Flex San Jose, the session formerly known as “Designer last application architecture” will henceforth be known as “Transforming the designer-developer workflow”.</p>

<p>If you want to know how to transform your designer-developer workflow, what smart components are and how to write them, how to empower your designers, how to free your developers from the client project cycle, and why this makes development more enjoyable, <a href="http://360flex-RichardL.eventbrite.com/">come join me at 360|Flex San Jose</a>.</p>

<p>The slides from this presentation are now <a href="/presentations/transforming-the-designer-developer-workflow">online here</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/my-360flex-presentation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frameworks presentation slides</title>
		<link>http://www.richardlord.net/blog/frameworks-presentation-slides</link>
		<comments>http://www.richardlord.net/blog/frameworks-presentation-slides#comments</comments>
		<pubDate>Fri, 19 Feb 2010 16:06:03 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[FLUG]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Parsley]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[Robotlegs]]></category>
		<category><![CDATA[Swiz]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=460</guid>
		<description><![CDATA[<p>Here are the slides from my frameworks presentation at Flex London User Group last Tuesday, 16 February 2010.</p>]]></description>
			<content:encoded><![CDATA[<p>Here are the slides from my presentation about Flex application frameworks at <a href="http://www.meetup.com/flexlondon/calendar/11801395/">Flex London User Group</a> last Tuesday, 16 February 2010.</p>

<p style="text-align:center"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flug-2010-100218161003-phpapp01&#038;rel=0&#038;stripped_title=application-frameworks-the-good-the-bad-the-ugly" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flug-2010-100218161003-phpapp01&#038;rel=0&#038;stripped_title=application-frameworks-the-good-the-bad-the-ugly" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>

<p>Links:</p>
<ul>
<li><a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm">Cairngorm</a> <a href="/blog/flexcaster-cairngorm">(code example)</a></li>
<li><a href="http://puremvc.org/">PureMVC</a> <a href="/blog/flexcaster-puremvc">(code example)</a></li>
<li><a href="http://mate.asfusion.com/">Mate</a> <a href="/blog/flexcaster-mate">(code example)</a></li>
<li><a href="http://swizframework.org/">Swiz</a> <a href="/blog/flexcaster-swiz">(code example)</a></li>
<li><a href="http://www.spicefactory.org/parsley/">Parsley</a> <a href="/blog/flexcaster-parsley">(code example)</a></li>
<li><a href="http://www.robotlegs.org/">Robotlegs</a> <a href="/blog/flexcaster-robotlegs">(code example)</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/frameworks-presentation-slides/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>360&#124;Flex San Jose</title>
		<link>http://www.richardlord.net/blog/360flex-san-jose</link>
		<comments>http://www.richardlord.net/blog/360flex-san-jose#comments</comments>
		<pubDate>Wed, 17 Feb 2010 18:35:32 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[360Flex]]></category>
		<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=455</guid>
		<description><![CDATA[<p>I was already considering making the trip to San Jose to attend the <a href="http://www.360flex.com/">360&#124;Flex conference</a> this March when the organisers asked me if I'd present a session. 360&#124;Flex has interested me for some time. It's the most technical, developer oriented of the many Flash and Flex conferences around, and as a developer myself that obviously interests me. The level of technical knowledge amongst the speakers is immense.</p>
<p>But 360&#124;Flex is about more than just technical presentations. John and Tom try very hard to make this a conference where all attendees feel part of a community...</p>]]></description>
			<content:encoded><![CDATA[<p>I was already considering making the trip to San Jose to attend the <a href="http://www.360flex.com/">360|Flex conference</a> this March when the organisers asked me if I&#8217;d present a session. It took me all of one millisecond to decide. Of course I&#8217;d love to. So I&#8217;ll be in San Jose next month hosting a session on “Designer last development architecture” &#8211; more on what that means in another post soon.</p>

<p>360|Flex has interested me for some time. It&#8217;s the most technical, developer oriented of the many Flash and Flex conferences around, and as a developer myself that obviously interests me. The level of technical knowledge amongst the speakers is immense. (That I&#8217;ve been invited to join them makes me feel very special).</p>

<p>But 360|Flex is about more than just technical presentations. John and Tom try very hard to make this a conference where all attendees feel part of a community. My first experience of this was in my invitation to speak, where they made it absolutely clear that they didn&#8217;t want me if I wasn&#8217;t going to hang around at the conference attending other sessions and chatting to the attendees – all the attendees, even the one&#8217;s I don&#8217;t know (yet). I like that. I don&#8217;t speak at conferences because I like the sound of my own voice, I speak at conferences because I like to exchange ideas with other developers, and that means both talking and listening. It means developing those ideas through discussion (and yes, sometimes those discussions involve beer, but that really isn&#8217;t the point).</p>

<p>Conferences aren&#8217;t about the sessions, they&#8217;re about the people. The sessions form a backbone to an event where developers meet and get to know each other, where we exchange ideas, inspire each other and forge a community. I would urge every developer to attend at least one conference a year. If 360|Flex sounds like your kind of conference, <a href="http://360flex-RichardL.eventbrite.com/">come join us</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/360flex-san-jose/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Presentation about Frameworks in London</title>
		<link>http://www.richardlord.net/blog/presentation-about-frameworks-in-london</link>
		<comments>http://www.richardlord.net/blog/presentation-about-frameworks-in-london#comments</comments>
		<pubDate>Fri, 12 Feb 2010 10:14:19 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[FLUG]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=449</guid>
		<description><![CDATA[<p>I'm revisiting and updating my frameworks presentation for Tuesday's meeting of the <a href="http://www.meetup.com/flexlondon/calendar/11801395/?a=cv1c_grp&#038;rv=cv1c">Flex London User Group</a>. The presentation will cover <a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm">Cairngorm</a>, <a href="http://puremvc.org/">PureMVC</a>, <a href="http://mate.asfusion.com/">Mate</a>, <a href="http://swizframework.org/">Swiz</a>, <a href="http://www.spicefactory.org/parsley/">Parsley</a>, and <a href="http://www.robotlegs.org/">Robotlegs</a>. I'll be looking at the similarities and differences between the frameworks and the trend towards dependency injection and loose coupling in the newer frameworks...</p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m revisiting and updating my frameworks presentation for Tuesday&#8217;s meeting of the <a href="http://www.meetup.com/flexlondon/calendar/11801395/?a=cv1c_grp&#038;rv=cv1c">Flex London User Group</a>. The presentation will cover <a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm">Cairngorm</a>, <a href="http://puremvc.org/">PureMVC</a>, <a href="http://mate.asfusion.com/">Mate</a>, <a href="http://swizframework.org/">Swiz</a>, <a href="http://www.spicefactory.org/parsley/">Parsley</a>, and <a href="http://www.robotlegs.org/">Robotlegs</a>. I&#8217;ll be looking at the similarities and differences between the frameworks and the trend towards dependency injection and loose coupling in the newer frameworks.</p>

<p>I&#8217;ve been studying the latest developments in these frameworks to bring the presentation right up to date so even if you&#8217;ve seen one of my earlier presentations about frameworks last year, there will be new content and new insights this time around.</p>

<p>If you want to know more about application frameworks, <a href="http://www.meetup.com/flexlondon/calendar/11801395/?a=cv1c_grp&#038;rv=cv1c">come join us on Tuesday</a>.</p>

<p>The slides from this event are <a href="/presentations/application-frameworks-the-good-the-bad-and-the-ugly">online here</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/presentation-about-frameworks-in-london/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Test the interface, not the implementation</title>
		<link>http://www.richardlord.net/blog/test-the-interface-not-the-implementation</link>
		<comments>http://www.richardlord.net/blog/test-the-interface-not-the-implementation#comments</comments>
		<pubDate>Fri, 05 Feb 2010 12:50:03 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://www.richardlord.net/?p=441</guid>
		<description><![CDATA[<p>In <a href="/blog/why-write-the-unittest-first">yesterday's post</a>, I mentioned that unit tests should test the interface and not the implementation. This is the simplest example I could think of to demonstrate this...</p>]]></description>
			<content:encoded><![CDATA[<p>In <a href="/blog/why-write-the-unittest-first">yesterday&#8217;s post</a>, I mentioned that unit tests should test the interface and not the implementation. This is the simplest example I could think of to demonstrate this. Consider this class.</p>

<pre class="code">package somePackage {
  class SomeClass {
    private var _x:int;

    public function getX():int {
      return _x;
    }

    public function setX( value:int ):void {
      _x = value;
    }
  }
}</pre>

<p>[N.B. I'm using standard methods rather than AS3 getter/setter methods because it makes the example clearer.]</p>

<p>Now, how do you test it? One temptation is to write a test for each method (many books on TDD suggest treating each method as a unit for testing is a good place to start). To do this, the tests would have to look something like this (in FlexUnit 4).</p>

<pre class="code">package testsPackage {
  import somePackage.SomeClass;

  class SomeClassTest {
    [Test]
    public function testGetX():void {
      var obj:SomeClass = new SomeClass();
      obj._x = 10;
      Assert.assertEquals( obj.getX(), 10 );
    }

    [Test]
    public function testSetX():void {
      var obj:SomeClass = new SomeClass();
      obj.setX( 10 );
      Assert.assertEquals( obj._x, 10 );
    }
  }
}</pre>

<p>Obviously, this doesn&#8217;t work because _x is private. But there are ways around that.</p>

<ol>
<li>We could make _x protected and make our test class extend the class we&#8217;re testing.</li>
<li>We could make _x internal and place the test in the same package as the class</li>
<li>We could define a new namespace and define _x in that namespace</li>
</ol>

<p>If we did this, we&#8217;d have good test coverage. However, we&#8217;ve compromised the class to make it testable. We&#8217;ve also made a test that is so tightly coupled to the implementation that there is no room for refactoring.</p>

<p>None of these is a good idea. We shouldn&#8217;t need to access _x just to test the class. The private _x variable is part of the implementation, and our test shouldn&#8217;t depend on the implementation.</p>

<p>If we consider the purpose of the class and the methods and properties used to interact with it (the interface), we realise that all we should care about is if we call setX with a value, then when we call getX we should get that same value back. So the test should look like this.</p>

<pre class="code">package testsPackage {
  import somePackage.SomeClass;

  class SomeClassTest {
    [Test]
    public function testX():void {
      var obj:SomeClass = new SomeClass();
      obj.setX( 10 );
      Assert.assertEquals( obj.getX(), 10);
    }
  }
}</pre>

<p>If you find yourself wanting to access private methods of a class for your tests, it&#8217;s probably because you&#8217;re testing the implementation rather than the interface.</p>

<p>N.B. I&#8217;d actually test x using a range of values (not just 10) covering edge cases and likely failures. Likely values include negative numbers, maximum/minimum values and zero.</p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlord.net/blog/test-the-interface-not-the-implementation/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
