<?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>Danny-T.co.uk &#187; Flash</title>
	<atom:link href="http://danny-t.co.uk/index.php/category/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://danny-t.co.uk</link>
	<description>Web apps fanatic, ramblings on dev for web, mobile and other geeky stuff</description>
	<lastBuildDate>Sat, 04 Feb 2012 09:59:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Come work with me!</title>
		<link>http://danny-t.co.uk/index.php/2011/02/16/come-work-with-me/</link>
		<comments>http://danny-t.co.uk/index.php/2011/02/16/come-work-with-me/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 12:44:16 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/?p=406</guid>
		<description><![CDATA[At Moov2 we have a lot of really exciting projects on the go and in the pipeline. We&#8217;re expanding our skill-sets and opening up more and more new opportunities. Coupled with one of our developers taking sabbatical we have a couple of new positions available and are looking for some hyper-enthusiastic devs to join our [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://moov2.com">Moov2</a> we have a lot of really exciting projects on the go and in the pipeline. We&#8217;re expanding our skill-sets and opening up more and more new opportunities. Coupled with one of our developers taking sabbatical we have a <a href="http://moov2.com/blog/2011/02/come-join-us/">couple of new positions available</a> and are looking for some hyper-enthusiastic devs to join our team.</p>
<p>We love playing with new technology and strive to stay on top of the latest and greatest. We also regularly attend industry events and user groups such as <a href="http://www.flashonthebeach.com/">FOTB</a>, <a href="http://www.droidcon.co.uk/">Droidcon</a>, <a href="http://www.360flex.com/">360Flex</a>, <a href="www.developerdeveloperdeveloper.com">DDD</a>, <a href="http://www.nxtgenug.net/">NxtGen</a> and <a href="http://www.lfpug.com/">LFPUG</a> and always looking for the next great event. </p>
<p>You&#8217;ll get to work with the likes of <a href="http://twitter.com/#!/dannyt">me</a>, <a href="http://twitter.com/#!/andreablack">@andreablack</a>, <a href="http://twitter.com/#!/peterkeating">@peterkeating</a> and <a href="http://twitter.com/#!/colinl">@colinl</a> along with occasional input from great talents such as <a href="http://twitter.com/#!/nwebb">@nwebb</a>, <a href="http://twitter.com/#!/getrichhull">@getrichhull</a>, <a href="http://twitter.com/#!/amw7">@amw7</a> and others to help us build world class RIAs. </p>
<p>We get all sorts of interesting projects ranging from sales tools for one of the worlds largest toy manufacturers to <a href="http://www.abrsm.org/students/speedshifter">really cool audio slow-downers</a> to help people learn to play music. We like to consider ourselves &#8216;platform agnostic&#8217; which means we don&#8217;t get caught up in the &#8220;my tech is better than your tech&#8221; arguments. We focus on learning as much as possible and using the best tool for the job. This is great fun for us, we don&#8217;t get stuck using the same old technology and means our clients get a better result from experienced and unbiased opinion.</p>
<p>If you&#8217;re a developer with good OOP experience, familiarity with Flex and/or .Net and a genuine passion for building amazing user experiences and writing great code why not <a href="http://moov2.com/blog/2011/02/come-join-us/">check out our openings and drop us your CV/portfolio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2011/02/16/come-work-with-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Player Mousewheel event not firing</title>
		<link>http://danny-t.co.uk/index.php/2011/01/27/flash-player-mousewheel-event-not-firing/</link>
		<comments>http://danny-t.co.uk/index.php/2011/01/27/flash-player-mousewheel-event-not-firing/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 20:28:21 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/?p=306</guid>
		<description><![CDATA[I&#8217;m not sure if this is an issue with a recent Flash Player, Browser updates, OS, Hardware or whatever but in a recent application I noticed really poor responsiveness on mousewheel scrolling. This was also picked up by the client so it was time to sort it. These sort of issues are always a real [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure if this is an issue with a recent Flash Player, Browser updates, OS, Hardware or whatever but in a recent application I noticed really poor responsiveness on mousewheel scrolling. This was also picked up by the client so it was time to sort it. </p>
<p>These sort of issues are always a real pain as it&#8217;s a problem not expected, not budgeted for and almost certainly going to eat a lot of time. Oddly I couldn&#8217;t find much else out there on the same issue. Fortunately one of the few resources I did find in this case someone had already done the hard work for us!</p>
<p><a href="http://labs.byhook.com/2010/04/09/flash-mouse-wheel-support/">Jake over at byHook</a> posted some extremely handy classes which use javascript injection to pickup the js mousewheel events in the browser which are much more reliable. It then uses the info from these events to fire off a new mouseevent in Flash.</p>
<p>It was built for use in Flash projects but works seamlessly in Flex also:</p>
<p>Import the classes and add the following to the APPLICATION_COMPLETE event:</p>
<p><code>private function onAppComplete(e:FlexEvent):void<br />
{<br />
	MouseWheelEnabler.init(this.stage);<br />
}</code></p>
<p>And that&#8217;s all, much more consistent and responsive scrolling! It did still feel a little slow for my taste so I added the following <a href="http://forums.adobe.com/message/2871015#2806424">bumpDelta method</a> to the system manager to speed things up:</p>
<p><code>private function onAppComplete(e:FlexEvent):void<br />
{<br />
	MouseWheelEnabler.init(this.stage);<br />
	systemManager.addEventListener("mouseWheel", bumpDelta, true);<br />
}<br />
public function bumpDelta(event:MouseEvent):void<br />
{<br />
	event.delta *= 2;<br />
}</code></p>
<p>Like I said, couldn&#8217;t find much when searching on this issue hence my re-posting of Jake&#8217;s solution. I was specifically looking for Flex so thought this might help someone else in the future but all props definitely due to byHook for the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2011/01/27/flash-player-mousewheel-event-not-firing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You&#8217;re doing handlers wrong</title>
		<link>http://danny-t.co.uk/index.php/2010/12/06/youre-doing-handlers-wrong/</link>
		<comments>http://danny-t.co.uk/index.php/2010/12/06/youre-doing-handlers-wrong/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 11:36:25 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/?p=294</guid>
		<description><![CDATA[Okay so it&#8217;s a link bait, sensationalist title, but that fact I&#8217;ve recognised that fact makes it okay yeah? Anyway like I said you&#8217;re doing handlers wrong&#8230; or rather, to stop with the hype-generating, FUD-like statements; If you&#8217;re waiting for RPC/Async handlers to return in order to update your application&#8217;s interface then allow me to [...]]]></description>
			<content:encoded><![CDATA[<p>Okay so it&#8217;s a link bait, sensationalist title, but that fact I&#8217;ve recognised that fact makes it okay yeah? Anyway like I said you&#8217;re doing handlers wrong&#8230; or rather, to stop with the hype-generating, FUD-like statements; If you&#8217;re waiting for RPC/Async handlers to return in order to update your application&#8217;s interface then allow me to propose a new approach:</p>
<blockquote><p>Always assume the call you&#8217;re making will work.</p></blockquote>
<p>Some context for the above, I recently got sick of my iPhone and decided to give Android a spin, side-stepping the obvious discussion here, one of the things that has irked me about the Android experience is that it just doesn&#8217;t feel as responsive as the iPhone for certain applications, specifically email. So I started to compare the two and realised that the iPhone reacts to my interactions immediately whereas Android seems to wait for approval from the server. This eye-opening discovery led to me imposing a new standard here at <a href="http://moov2.com">Moov2</a>:</p>
<blockquote><p>Every user interaction must have an immediate and obvious reaction.</p></blockquote>
<p>Proud and smug feelings of wearing my user experience hat were soon interupted when challenged to explain wtf I actually meant by this. So, for example, deleting an email from a list of viewed email messages. When I hit delete I expect that message to be removed from the list and if that happens as soon as I press the delete button, I&#8217;m a happy chap. Conversely, if I have to wait, even a couple of seconds, I may think I missed and try hitting it again&#8230; and again&#8230; etc. So developers, quite simply, as soon as that delete button is hit, remove the message from the list and THEN send your call informing the server to do it&#8217;s part. This approach can be applied to pretty much any application development that involves a rich user interface, Flash, Flex, Silverlight, AJAX, Android, iPhone, native desktop apps and whatever.</p>
<h3>But what if something goes wrong?</h3>
<p>Of course, just throwing the message away willy-nilly is reckless, there&#8217;s a whole host of things that could prevent that message from being deleted. The user might be offline, the email list might not be up to date or there may just be some other bug elsewhere making the delete email process just plain not possible at the moment. In this case, sheepishly, politely and unobtrusively, let your user know the fact and pop the email back where it came from. This will obviously be a nuissance to the user, but how often does this really happen in comparisson to how often it works? Very rarely, and it&#8217;s no less annoying for the user than having to sit there waiting with no response only to find out the action failed.</p>
<h3>What if I NEED the response in order to update the UI?</h3>
<p>So deleting is a fairly convenient example because we&#8217;re taking away from an already viewable interface, what about if we&#8217;re adding to our interface based on the response from our call? For example displaying the list of emails in the first place. Well, for this I suggest you present all of the interface elements that you know are going to be available and just provide some indication that something else is going on to reassure the user that their input has been acknowledged. So when the user chooses to view their inbox, immediately react and change the view, present them the &#8216;Inbox&#8217; title, show them any user controls they might be able to interact with and display the space those messages are going to load into with some form of preloader/spinner and note indicating their messages are being retrieved.</p>
<p>So take a minute and review your result handlers to see how much UI stuff is being done there. Could it be moved to before the call was made? This sometimes means you need to think about how to best back-track when things go wrong but for the 95% of the time when you just get the result you&#8217;d expect you&#8217;ll deliver a MUCH more responsive feeling interface that your users will thank you for.</p>
<p>By the way, if you&#8217;d like to actually see some code demonstrating this concept tweet the following message to Pete who has prepared a very clean implementation of this for a Flex application we&#8217;re currently working on: &#8220;<a href="http://twitter.com/?status=Hey @peterkeating, codez pls http://bit.ly/f8HOyp">Hey @peterkeating, codez pls http://bit.ly/f8HOyp</a>. I&#8217;m sure he&#8217;ll oblige with a sample soon enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2010/12/06/youre-doing-handlers-wrong/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fla to FXG to Flex 4 Spark Skins</title>
		<link>http://danny-t.co.uk/index.php/2010/10/27/fla-to-fxg-to-flex-4-spark-skins/</link>
		<comments>http://danny-t.co.uk/index.php/2010/10/27/fla-to-fxg-to-flex-4-spark-skins/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 22:02:20 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/?p=268</guid>
		<description><![CDATA[I&#8217;ve been taking a look at Flex 4 skinning recently, a little late to the game but as the rest of the team was getting familiar I decided it was my time to step up. My first impressions were not that great but after familiarising myself with it I started to see the benefits. One [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://danny-t.co.uk/wp-content/uploads/flatofxg.png"><img src="http://danny-t.co.uk/wp-content/uploads/flatofxg.png" alt="" title="flatofxg" width="298" height="283" class="alignright size-full wp-image-270" /></a>I&#8217;ve been taking a look at Flex 4 skinning recently, a little late to the game but as the rest of the team was getting familiar I decided it was my time to step up. My first impressions were not that great but after familiarising myself with it I started to see the benefits.</p>
<p>One fairly simple yet useful and perhaps not widely known discovery I made was how to go about getting assets designed in Flash into my Flex skin with just a bit of faffing about. I&#8217;d figured this wouldn&#8217;t be too high up on many people&#8217;s interest list with Catalyst weighing in as the main contender but <a href="http://twitter.com/probertson">Paul</a> showed some interest so if for no one else, I know it&#8217;s of interest for at least someone out there!</p>
<h3>Fla to Fxg to Spark</h3>
<p>Will try to keep this to the point and let the visuals do the talking.</p>
<p>We start off with a simple Spark Button and assign it a custom skin:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>s:Application xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> 
			   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> 
			   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span> 
			   minWidth=<span style="color: #ff0000;">&quot;955&quot;</span> 
			   minHeight=<span style="color: #ff0000;">&quot;600&quot;</span><span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;</span>s:layout<span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;</span>s:VerticalLayout gap=<span style="color: #ff0000;">&quot;20&quot;</span> 
			paddingLeft=<span style="color: #ff0000;">&quot;20&quot;</span>
			paddingTop=<span style="color: #ff0000;">&quot;20&quot;</span> <span style="color: #66cc66;">/&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>s:layout<span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;</span>s:<span style="color: #0066CC;">Button</span> label=<span style="color: #ff0000;">&quot;My Button&quot;</span> 
			 skinClass=<span style="color: #ff0000;">&quot;skins.FlaFxgSkin&quot;</span> <span style="color: #66cc66;">/&gt;</span>
<span style="color: #66cc66;">&lt;/</span>s:Application<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>To create the skin simply File, New, MXML Skin and set the host component to be a Spark Button as so:</p>
<p><a href="http://danny-t.co.uk/wp-content/uploads/newFlexSkin.png"><img src="http://danny-t.co.uk/wp-content/uploads/newFlexSkin.png" alt="" title="newFlexSkin" width="525" height="504" class="alignnone size-full wp-image-279" /></a></p>
<p>With the generated skin we can actually remove everything down to the following which is just an empty button skin with a label:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>s:SparkSkin xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> 
	     xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> 
             xmlns:fb=<span style="color: #ff0000;">&quot;http://ns.adobe.com/flashbuilder/2009&quot;</span> 
	     minWidth=<span style="color: #ff0000;">&quot;21&quot;</span> 
	     minHeight=<span style="color: #ff0000;">&quot;21&quot;</span> 
	     alpha.<span style="color: #006600;">disabled</span>=<span style="color: #ff0000;">&quot;0.5&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
    <span style="color: #66cc66;">&lt;</span>fx:Metadata<span style="color: #66cc66;">&gt;</span>
        <span style="color: #66cc66;">&#91;</span>HostComponent<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;spark.components.Button&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
    <span style="color: #66cc66;">&lt;/</span>fx:Metadata<span style="color: #66cc66;">&gt;</span>
&nbsp;
    <span style="color: #66cc66;">&lt;</span>s:states<span style="color: #66cc66;">&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;up&quot;</span> <span style="color: #66cc66;">/&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;over&quot;</span> <span style="color: #66cc66;">/&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;down&quot;</span> <span style="color: #66cc66;">/&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;disabled&quot;</span> <span style="color: #66cc66;">/&gt;</span>
    <span style="color: #66cc66;">&lt;/</span>s:states<span style="color: #66cc66;">&gt;</span>    
&nbsp;
    <span style="color: #66cc66;">&lt;</span>s:Label id=<span style="color: #ff0000;">&quot;labelDisplay&quot;</span>
             textAlign=<span style="color: #ff0000;">&quot;center&quot;</span>
             verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span>
             maxDisplayedLines=<span style="color: #ff0000;">&quot;1&quot;</span>
             horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;1&quot;</span>
             <span style="color: #0066CC;">left</span>=<span style="color: #ff0000;">&quot;10&quot;</span> <span style="color: #0066CC;">right</span>=<span style="color: #ff0000;">&quot;10&quot;</span> top=<span style="color: #ff0000;">&quot;2&quot;</span> bottom=<span style="color: #ff0000;">&quot;2&quot;</span><span style="color: #66cc66;">&gt;</span>
    <span style="color: #66cc66;">&lt;/</span>s:Label<span style="color: #66cc66;">&gt;</span>
&nbsp;
<span style="color: #66cc66;">&lt;/</span>s:SparkSkin<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>At this point we have a pretty dull skin and want to jazz it up a little with some Flash sexyness, I suggest you find your own but this is what I&#8217;ll be using to demonstrate:</p>
<p><a href="http://danny-t.co.uk/wp-content/uploads/flashsexyness.png"><img src="http://danny-t.co.uk/wp-content/uploads/flashsexyness-300x205.png" alt="" title="flashsexyness" width="300" height="205" class="alignnone size-medium wp-image-276" /></a></p>
<p>Once you have your masterpiece all you need do is File, Export, Export Image and choose the FXG file type. Point this file at your desktop or somewhere handy and you can open it in your text editor of choice.</p>
<p>What I noticed when I did this is that the FXG from Flash has near enough identical paths, fills, strokes, gradients etc as in spark (of course this is obviously by it&#8217;s very nature). The only thing that didn&#8217;t correlate was the spark namespace. If your shape is simple enough you can just go and manually add the s: by hand but if it isn&#8217;t then RegEx to the rescue. You&#8217;ll see I&#8217;ve used <del datetime="2010-10-27T19:30:37+00:00">Notepad++</del>* <a href="http://www.pnotepad.org/">Programmers Notepad</a> in the following screens to do a regex search and replace to insert the namespace we want.</p>
<p><strong>Regex</strong><br />
<code>find pattern - (&lt;|&lt;/)(\w)<br />
replace pattern - \1s:\2<br />
(you might need to change the replace to $1s:$2 depending on text editor)</code></p>
<p>Before:</p>
<p><a href="http://danny-t.co.uk/wp-content/uploads/regexBefore.jpg"><img src="http://danny-t.co.uk/wp-content/uploads/regexBefore.jpg" alt="" title="regexBefore" width="807" height="493" class="alignnone size-full wp-image-281" /></a></p>
<p>After:<br />
<a href="http://danny-t.co.uk/wp-content/uploads/regexAfter.jpg"><img src="http://danny-t.co.uk/wp-content/uploads/regexAfter.jpg" alt="" title="regexAfter" width="806" height="493" class="alignnone size-full wp-image-282" /></a></p>
<p>Then you have your fxg code needed for your skin, simply copy and paste all of the the <strong>&lt;s:Path&gt; elements</strong> into your skin just above the label:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>s:SparkSkin xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> 
	     xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> 
             xmlns:fb=<span style="color: #ff0000;">&quot;http://ns.adobe.com/flashbuilder/2009&quot;</span> 
	     minWidth=<span style="color: #ff0000;">&quot;21&quot;</span> 
	     minHeight=<span style="color: #ff0000;">&quot;21&quot;</span> 
	     alpha.<span style="color: #006600;">disabled</span>=<span style="color: #ff0000;">&quot;0.5&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
    <span style="color: #66cc66;">&lt;</span>fx:Metadata<span style="color: #66cc66;">&gt;</span>
        <span style="color: #66cc66;">&#91;</span>HostComponent<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;spark.components.Button&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
    <span style="color: #66cc66;">&lt;/</span>fx:Metadata<span style="color: #66cc66;">&gt;</span>
&nbsp;
    <span style="color: #66cc66;">&lt;</span>s:states<span style="color: #66cc66;">&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;up&quot;</span> <span style="color: #66cc66;">/&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;over&quot;</span> <span style="color: #66cc66;">/&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;down&quot;</span> <span style="color: #66cc66;">/&gt;</span>
        <span style="color: #66cc66;">&lt;</span>s:State <span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">&quot;disabled&quot;</span> <span style="color: #66cc66;">/&gt;</span>
    <span style="color: #66cc66;">&lt;/</span>s:states<span style="color: #66cc66;">&gt;</span>    
&nbsp;
	<span style="color: #66cc66;">&lt;</span>s:Path <span style="color: #0066CC;">data</span>=<span style="color: #ff0000;">&quot;M59.2 25.8 59.55 43.35 82.25 50.3 67.7 58.05 85.35 79.95 58.45 71.8 55.5 99.75 42.2 75 20.3 92.65 28.45 65.75 0.5 62.8 25.25 49.5 7.6 27.65 34.5 35.75 37.45 7.85 50.75 32.55 59.2 25.8&quot;</span><span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;</span>s:fill<span style="color: #66cc66;">&gt;</span>
			<span style="color: #66cc66;">&lt;</span>s:SolidColor <span style="color: #0066CC;">color</span>=<span style="color: #ff0000;">&quot;#009900&quot;</span><span style="color: #66cc66;">/&gt;</span>
		<span style="color: #66cc66;">&lt;/</span>s:fill<span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>s:Path<span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;</span>s:Path <span style="color: #0066CC;">data</span>=<span style="color: #ff0000;">&quot;M82.25 50.3 59.55 43.35 59.2 25.8 58.9 11.05 89.5 0.5 109 26.25 90.5 52.8 82.25 50.3&quot;</span><span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;</span>s:fill<span style="color: #66cc66;">&gt;</span>
			<span style="color: #66cc66;">&lt;</span>s:LinearGradient x=<span style="color: #ff0000;">&quot;58.9&quot;</span> y=<span style="color: #ff0000;">&quot;26.65&quot;</span> scaleX=<span style="color: #ff0000;">&quot;50.1&quot;</span><span style="color: #66cc66;">&gt;</span>
				<span style="color: #66cc66;">&lt;</span>s:GradientEntry ratio=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #0066CC;">color</span>=<span style="color: #ff0000;">&quot;#414142&quot;</span><span style="color: #66cc66;">/&gt;</span>
				<span style="color: #66cc66;">&lt;</span>s:GradientEntry ratio=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #0066CC;">color</span>=<span style="color: #ff0000;">&quot;#686868&quot;</span><span style="color: #66cc66;">/&gt;</span>
			<span style="color: #66cc66;">&lt;/</span>s:LinearGradient<span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;/</span>s:fill<span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>s:Path<span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;</span>s:Path <span style="color: #0066CC;">data</span>=<span style="color: #ff0000;">&quot;M59.2 25.8 58.9 11.05 89.5 0.5 109 26.25 90.5 52.8 82.25 50.3 67.7 58.05 85.35 79.95 58.45 71.8 55.5 99.75 42.2 75 20.3 92.65 28.45 65.75 0.5 62.8 25.25 49.5 7.6 27.65 34.5 35.75 37.45 7.85 50.75 32.55 59.2 25.8M82.25 50.3 59.55 43.35 59.2 25.8&quot;</span><span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;</span>s:stroke<span style="color: #66cc66;">&gt;</span>
			<span style="color: #66cc66;">&lt;</span>s:SolidColorStroke weight=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #0066CC;">color</span>=<span style="color: #ff0000;">&quot;#20343D&quot;</span><span style="color: #66cc66;">/&gt;</span>
		<span style="color: #66cc66;">&lt;/</span>s:stroke<span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>s:Path<span style="color: #66cc66;">&gt;</span>
&nbsp;
    <span style="color: #66cc66;">&lt;</span>s:Label id=<span style="color: #ff0000;">&quot;labelDisplay&quot;</span>
             textAlign=<span style="color: #ff0000;">&quot;center&quot;</span>
             verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span>
             maxDisplayedLines=<span style="color: #ff0000;">&quot;1&quot;</span>
             horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;1&quot;</span>
             <span style="color: #0066CC;">left</span>=<span style="color: #ff0000;">&quot;10&quot;</span> <span style="color: #0066CC;">right</span>=<span style="color: #ff0000;">&quot;10&quot;</span> top=<span style="color: #ff0000;">&quot;2&quot;</span> bottom=<span style="color: #ff0000;">&quot;2&quot;</span><span style="color: #66cc66;">&gt;</span>
    <span style="color: #66cc66;">&lt;/</span>s:Label<span style="color: #66cc66;">&gt;</span>
&nbsp;
<span style="color: #66cc66;">&lt;/</span>s:SparkSkin<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>And you&#8217;re done! Okay you&#8217;ll obviously want to do more with it than that, you can tie this into your button states and also do clever dynamic stuff with the FXG once it&#8217;s in but for now I figured this is enough. It would be really nice if this could be done without all the copying and pasting and I think possibly a JSFL script could do alot of the work for us so if anyone wants to contribute that, I&#8217;d be most grateful. </p>
<p>I&#8217;m going to try to expand on this and demonstrate a bit more of what I&#8217;ve been discovering as I find the time and figure more interesting things out.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2010/10/27/fla-to-fxg-to-flex-4-spark-skins/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Thoughts (aka moan) about Buzzword</title>
		<link>http://danny-t.co.uk/index.php/2010/04/22/thoughts-aka-moan-about-buzzword/</link>
		<comments>http://danny-t.co.uk/index.php/2010/04/22/thoughts-aka-moan-about-buzzword/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 07:01:27 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/?p=193</guid>
		<description><![CDATA[I&#8217;ve been using Buzzword for a few years now, it&#8217;s still one of the best examples of an RIA that stands up against it&#8217;s costlier, heavier installable counterparts. Having your documents online accessible from anywhere is a great facility plus, there are some truly innovative UI aspects that make using it a great experience, or [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://buzzword.acrobat.com/">Buzzword</a> for a few years now, it&#8217;s still one of the best examples of an RIA that stands up against it&#8217;s costlier, heavier installable counterparts. Having your documents online accessible from anywhere is a great facility plus, there are some truly innovative UI aspects that make using it a great experience, or example paging in scrollbars, great text-flow around images and the history feature is first class.</p>
<p>That said, it definitely feels like it might be a bit of a second class citizen to Adobe. As I mentioned I&#8217;ve been using Buzzword for literally years and witnessed it evolve considerably since it&#8217;s earlier days. However, that evolution appears to have slowed. The only notable feature to have been added in the past few months is Workspaces. Other than this I know of a long list of feature requests that are as yet, unfulfilled. To be fair, this is more a rant about Buzzword specifically and not Acrobat.com as a whole as I haven&#8217;t fully checked out the presentation or &#8216;tables&#8217; software and they have added support for conferencing with Adobe Connect so maybe that&#8217;s where efforts are being spent. </p>
<p>Workspaces is however, a great feature which I would love to make full use of&#8230; but can&#8217;t:<br />
<a href="http://danny-t.co.uk/wp-content/uploads/Picture-6.png"><img src="http://danny-t.co.uk/wp-content/uploads/Picture-6.png" alt="" title="Picture 6" width="637" height="80" class="aligncenter size-full wp-image-191" /></a><br />
This has been the case for a long time now and several other aspects such as Connect are restricted by this. Whilst I appreciate there are legal and corporate considerations here that argument only stands for so long, what year is this?! I&#8217;ve been a fully-paid up user of a lot of SAAS services who have managed to figure this out. I did moan about this on twitter a while back to which I did get a response from the acrobat twitter account informing me to sign up to be notified when they worked this out, however I have been on the notification list for a long time now and have never had even an update from it.</p>
<p>Talking of SAAS or cloud based software, I&#8217;m a techie and a businessman, probably the ideal target audience for Acrobat.com I&#8217;m not afraid to be an early adopter of technologies and am comfortable signing up to such things. Which is why I also use Google Chrome as my current browser of choice&#8230; which is why this is also annoying:<br />
 <a href="http://danny-t.co.uk/wp-content/uploads/Picture-7.png"><img src="http://danny-t.co.uk/wp-content/uploads/Picture-7.png" alt="" title="Picture 7" width="298" height="178" class="aligncenter size-full wp-image-192" /></a><br />
I appreciate Chrome is a new browser and I don&#8217;t expect every new technology that comes along to be instantly fully supported. However before they blocked Chrome it did work, it was glitchy but then a lot of sites are and that&#8217;s what you expect in early release software. A much more welcome approach would have been a note saying Chrome wasn&#8217;t fully tested yet so an alternative browser is recommended but you&#8217;re free to carry on if you choose. </p>
<p>UPDATE: see Bob Treitman&#8217;s (Adobe QA engineer &#8211; I believe) comment below explaining the above is an FP10.1 issue.</p>
<p>Anyway, I will continue to use Buzzword for now (not to mention stop moaning and get some work done) but I am getting increasingly disheartened by the lack of new features and restrictive US-only availability. I will also have a look at other similar services, I do use Google docs but it still feels like a webpage as opposed to a word processor, feel free to suggest alternatives in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2010/04/22/thoughts-aka-moan-about-buzzword/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Optimal RIA development hardware</title>
		<link>http://danny-t.co.uk/index.php/2010/02/13/optimal-ria-development-hardware/</link>
		<comments>http://danny-t.co.uk/index.php/2010/02/13/optimal-ria-development-hardware/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 22:06:23 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mac/OS X]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/?p=170</guid>
		<description><![CDATA[No matter how much we spend on new hardware, progress bars, spinning timers, system freezes and occasionally crashes are a familiar site when developing RIAs. My Macbook Pro seems to be fast approaching the end of it&#8217;s life and I&#8217;ve started to think about a new machine. So I thought rather than spend forever looking [...]]]></description>
			<content:encoded><![CDATA[<p>No matter how much we spend on new hardware, progress bars, spinning timers, system freezes and occasionally crashes are a familiar site when developing RIAs. My Macbook Pro seems to be fast approaching the end of it&#8217;s life and I&#8217;ve started to think about a new machine.</p>
<p>So I thought rather than spend forever looking up hardware specs, recommended platforms and whatever, I&#8217;d just do the lazy thing and put it out there to the <a href="http://en.wikipedia.org/wiki/Lazyweb">#lazyweb</a> and see what came up.</p>
<p><a href="http://danny-t.co.uk/wp-content/uploads/riahardware.png"><img src="http://danny-t.co.uk/wp-content/uploads/riahardware.png" alt="" title="ria hardware" width="608" height="300" class="aligncenter size-full wp-image-171" /></a></p>
<p>Within moments the ever-helpful <a href="http://www.seantheflexguy.com/">seantheflexguy</a> responded with his spec and his endorsement of his setup:<br />
<a href="http://twitter.com/seantheflexguy/statuses/9070997938"><img src="http://danny-t.co.uk/wp-content/uploads/seantheflexguyRiaSpec.png" alt="" title="seantheflexguyRiaSpec" width="538" height="268" class="aligncenter size-full wp-image-172" /></a></p>
<p>Well, that was very useful and I thought how great it would be if we could collate more information about other RIA developers&#8217; setups and how they rate them. </p>
<p>So feel free to contribute and copy the following into the comments and fill it in and you can help <del datetime="2010-02-13T21:36:34+00:00">do my research for me</del> share hardware spec for the benefit of the RIA community <img src='http://danny-t.co.uk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<br />
<code><br />
Computer:<br />
Processor:<br />
RAM:<br />
Hard Disk Size:<br />
Hard Disk Speed:<br />
Primary Software Used:<br />
Rating:  / 10<br />
Other Comments:<br />
</code></p>
<p>Here&#8217;s mine for starters:</p>
<p>Computer: Macbook Pro 17&#8243;<br />
Processor: 2.4Ghz Intel Core 2 Duo<br />
RAM: 4Gb<br />
Hard Disk Size: 150Gb<br />
Hard Disk Speed: 5600rpm (i think)<br />
Primary RIA development Software Used: Flex Builder, Visual Studio 2008 (under VMWare Fusion), Sql Server 2008<br />
Rating:  7 / 10<br />
Other Comments: The machine has been a real workhorse for the past 2 years and has taken quite a bit of torment from me. The hardware has been fairly robust although the problems are starting to present themselves now (now i&#8217;m out of warranty!) and things are very costly to put right. Runs very hot when running FlexBuilder in OSX and VS in windows and has really started to slow down lately. Never had much of a problem with system crashes or freezing other than the occasional browser fail.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2010/02/13/optimal-ria-development-hardware/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>360 Flex Europe over</title>
		<link>http://danny-t.co.uk/index.php/2008/04/12/360-flex-europe-over/</link>
		<comments>http://danny-t.co.uk/index.php/2008/04/12/360-flex-europe-over/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 13:28:38 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/index.php/2008/04/12/360-flex-europe-over/</guid>
		<description><![CDATA[Okay so I&#8217;m a couple of days late on this one, however taking 3 days out of work takes it&#8217;s toll on the remaining 2 days of the week when you get back. We got to the hotel on Sunday morning with the best intentions of spending the day doing touristy things, unfortunately because of [...]]]></description>
			<content:encoded><![CDATA[<p>Okay so I&#8217;m a couple of days late on this one, however taking 3 days out of work takes it&#8217;s toll on the remaining 2 days of the week when you get back. </p>
<p>We got to the hotel on Sunday morning with the best intentions of spending the day doing touristy things, unfortunately because of our flight timings we basically traveled throughout the night and just got the hotel and crashed for a few hours. First thing I did after I&#8217;d caught up on sleep was sort out wifi access, not good. Best part of Â£70 for 3 days wifi is ridiculous&#8230; and it was slooooow. This was definitely an issue for a hotel full of geeks and would suggest anyone organising a conference takes internet access into serious consideration when finding a venue.</p>
<p>We later went down to the speaker dinner which was a relatively quiet affair but was great to meet new people and the dinner was pretty decent. At this point to be honest I didn&#8217;t have particularly high hopes for the conference because of the low number of attendees. Fortunately however my initial concerns were not upheld.</p>
<p>The first day of the conference for me went something like this:</p>
<p>Keynote: nothing new for me here but good to see Adobe having a presence.</p>
<p><strong><a href="http://blogs.digitalprimates.net/codeslinger/">Michael Labriola:</a> Dense and Hot &#8211; An Introduction to Your Application&#8217;s Start Up</strong><br />
Michael has a great presentation style, he was relaxed and managed to get through quite a lot of very useful information in a relatively short space of time. I think conferences could do with more of these sorts of sessions as many seem to have a lot more introductory level sessions. I learnt a lot from Michael in the session and throughout the rest of the conference. He&#8217;s also a very smart and funny guy.</p>
<p><strong><a href="http://casario.blogs.com/">Marco Cassario</a>: Better Flex and AIR Applications Using AJAX</strong><br />
Marco gave an interesting presentation on using AJAX in AIR but he also covered some general good practices for Flex development. I learned a few things AJAX related that I didn&#8217;t already know but I think generally AJAX just doesn&#8217;t get Flex developers very excited. Marco presented his session well and got through a lot of material but I would definitely like to see him present on some more advanced Flex stuff in the future.</p>
<p><strong><a href="http://lucamezzalira.wordpress.com/">Luca Mezzalira</a>: Flex Bitmap Effects!</strong><br />
Luca gave a fun presentation on Bitmap effects and had some good samples to share. I&#8217;ve not really done anything with bitmap effects before and definitely now have the required knowledge to do so.</p>
<p><strong><a href="http://www.flashfuck.it/">Piergiorgio Niero</a>: 3D Render Engines in the Flash Platform</strong><br />
Piergiorgio gave a great presentation starting with some of the basics of 3D in flash then running through to demonstrate the build up of some very impressive Papervision3D demonstrations and Papervision in Flex. He wasn&#8217;t too confident in his English but certainly got everything he needed to across and the examples and sample code provided are great. </p>
<p><strong><a href="http://www.sakri.net/blog/">Sakri Rosenstrom</a>:Invalidation Routines, Pounded into Your Cranium Once and for All!</strong><br />
Unfortunately I had to deal with some work issues during Sakri&#8217;s presentation which was really annoying as I wasn&#8217;t able to concentrate on it fully and it was a pretty technical session. What I did manage to keep up with was very useful and well presented and Sakri managed to deal with some unexpected technical issues very well. I hope to catch his session again some time.</p>
<p><strong><a href="http://nwebb.co.uk/blog/">Neil Webb</a>: Cairngorm for Beginners</strong><br />
Neil&#8217;s a good friend of mine and I&#8217;d seen parts of his presentation beforehand but was looking forward to seeing the whole show. He was a little nervous at first and perhaps spoke a little quietly to begin with considering he wasn&#8217;t using a mic. However, once he settled into things the presentation went very well. He has some VERY funny slides and if you&#8217;re going to scotch on the rocks and/or 360 Flex San Jose definitely check out his session. Even if you know Cairngorm go see it for the Phat controller, Sexed up Flex Frameworks and Sexyometer! If you aren&#8217;t familiar with Cairngorm then Neil breaks it down into a very digestible manner and uses great metaphors to explain what&#8217;s going on.</p>
<p><strong><a href="http://blogs.adobe.com/borre/">Borre Wessel</a>: Cairngorm Deepdive</strong><br />
Borre presented a good session on Cairngorm and other useful good development practices. He covered some topics that I&#8217;ve been looking into lately such as view patterns and did a good job of explaining the Presentation Model pattern which is a very nice approach. He seems a pretty laid back guy which made him approachable for questions but perhaps could do with a little more enthusiasm and volume to maintain the audiences interest. Nevertheless another useful session for me <img src='http://danny-t.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Finally it was my turn to do my presentation on Developer Best Practices. I was a little worried as I hadn&#8217;t prepared quite as much as I&#8217;d have hoped to (being &#8216;dragged&#8217; out for pizza and 1 litre beers the night before didn&#8217;t help <img src='http://danny-t.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ). I was more concerned however by the fact that almost everyone I&#8217;d met was a very talented and skilled Flex developer who more than likely didn&#8217;t need to be told the best practices I was there to present.<br />
This concern was re-affirmed as I kicked things off by asking the group &#8220;Who uses source control?&#8221; as the preamble to my 10 minutes I&#8217;d planned explaining source control&#8230; to which all but one of the attendees already did! After struggling preaching to the choir for a few minutes, I decided to scrap that and adopt my reserve tactic of opening the topics in the session up for debate.</p>
<p>This was also a concern of mine as in many of the sessions the audience tended to stay pretty much silent. Fortunately for me I had <a href="http://blogs.digitalprimates.net/codeslinger/">Michael</a>, <a href="http://www.blog.rivello.org/">Sam</a>, <a href="http://nwebb.co.uk/blog/">Neil</a>, <a href="http://thecourtsofchaos.com/">Robin</a>, <a href="http://www.sakri.net/blog/">Sakri</a> and various others in the session who really came into their own and spoke out. We discussed various OOP practices, design patterns, unit testing and a great debate on pair programming (always a good one to throw in if you want some audience participation!). </p>
<p>I enjoyed the session in the end and definitely would like to try the discussion approach in the future as I managed to learn a few things from the guys I was supposed to be presenting to and I&#8217;ve had some good feedback about it (despite the ropey start).</p>
<p>Overall, despite initial concerns 360 Flex Europe turned out to be a great conference and I&#8217;ve very glad to have attended.  Thanks to the 360 guys for arranging it and thanks to everyone I met there.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2008/04/12/360-flex-europe-over/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Attention to Detail in Rich Internet Applications</title>
		<link>http://danny-t.co.uk/index.php/2008/02/06/attention-to-detail-in-rich-internet-applications/</link>
		<comments>http://danny-t.co.uk/index.php/2008/02/06/attention-to-detail-in-rich-internet-applications/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 01:23:33 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/index.php/2008/02/06/attention-to-detail-in-rich-internet-applications/</guid>
		<description><![CDATA[Adobe&#8217;s Ethan, Ted and Ryan recently gave a big thumbs up to Firebrand an RIA for watching adverts. Niels Bruin responded with what I think is a very good wake-up call to the starry eyed approach to reviewing web apps with lots of transitions, reflections and other shiny bits. Niels highlights some real basic usability [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe&#8217;s <a href="http://eismann-sf.com/news/?p=117">Ethan</a>, <a href="http://www.onflex.org/ted/2008/01/adobe-flex-super-bowl-xlii-and.php">Ted</a> and <a href="http://blog.digitalbackcountry.com/?p=1254">Ryan</a> recently gave a big thumbs up to <a href="http://www.firebrand.com/">Firebrand</a> an RIA for watching adverts.</p>
<p><a href="http://www.nielsbruin.nl/blog/">Niels Bruin responded</a> with what I think is a very good wake-up call to the starry eyed approach to reviewing web apps with lots of transitions, reflections and other shiny bits. Niels highlights some real basic usability <a href="http://en.wikipedia.org/wiki/Faux_pas">faux pas</a> that Firebrand made such as mystery meat navigation, red punishing looking confirmation messages and inconsistent design touches.</p>
<p>To be honest, I read all the commotion and Niels put down before I looked at the site and to be fair to Firebrand I probably wouldn&#8217;t have picked up on those points myself. But then I&#8217;m not and would not claim to be a UX hotshot of any kind. The key point for me is that the points raised by Niels do not require a magical usability eye and could very easily be a printed checklist and implemented as part of a quality control assessment before final delivery of a product. To be fair I do also agree with the points Ryan makes in his <a href="http://blog.digitalbackcountry.com/?p=1264">followup</a> and I&#8217;m also all too familiar with things such as expectation and deadlines which can all to easily prevent this much-needed attention to detail. However, if we keep reminding ourselves of it then hopefully it will become second nature and not needed as a time consuming afterthought.</p>
<p>If you&#8217;re responsible for the creation, delivery or quality of a customer facing project, take 20 minutes, open up your word-processor of choice (perhaps use it as an opportunity to try out <a href="http://www.buzzword.com/">Buzzword</a>) and hack together a simple list of quality control checks. </p>
<p>Here&#8217;s a handful of checks plagerised from Niels post and an old post I remembered by <a href="http://aralbalkan.com">Aral</a> to get you started, copy the below and paste into a document, print out 10 copies, run through your current project and tick each one off and you&#8217;re well on your way to becoming a quality control engineer!</p>
<p><strong>Niels&#8217; <a href="http://www.nielsbruin.nl/blog/">Firebrand wrist-slap</a>:</strong></p>
<ul>
<li>Make sure any icons/metaphors are extremely obvious or explained with tooltips or other indicators</li>
<li>Make confirmation messages look positive and warnings look like warnings (I.e. don&#8217;t positively confirm an action in red)</li>
<li>Is everything laid out consistently? How much effort would it really be to tweak that button a few pixels to line up properly?</li>
<li>Can familiar controls be used in a familiar manner? E.g. can I scroll a scrollbar using my mousewheel, drag it and click up/down arrows?</li>
<li>Have you tested on all likely platforms/browsers? At <em>least</em> WinXP, Vista, Linux, OSX with IE6 &#038; 7, Firefox, Safari, Opera</li>
</ul>
<p><strong>Aral&#8217;s old <a href="http://aralbalkan.com/687">post on UI principles</a> (interpretation by moi for checklisting purposes):</strong></p>
<ul>
<li>I can use it but am I a &#8216;typical user&#8217;? Even better: can I get an intended user (or several) to use it?</li>
<li>Does validation &#8220;prevent not scold&#8221;? Does the user get scolded &#8220;YOU IDIOT, WHY DIDN&#8217;T YOU SELECT A GENDER BEFORE CLICKING THAT BUTTON?!&#8221; or do we just make the button un-clickable until the gender has been selected with some unobtrusive instruction to do so?</li>
<li>Does the user receive sufficient feedback? If the user makes an interaction, is it obvious that interaction has been acknowledged by the app and the expected result has happened? (see Niels point on adding to faves).</li>
</ul>
<p>There&#8217;s a load of other things that can be added to this list, for generic testing and I&#8217;m sure for specific audiences/companies/application types etc. I&#8217;m going to do some digging on other principles people have come up with as I know there are a ton out there but whilst this is topical I thought I&#8217;d add my opinion and throw in a call to action to anyone reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2008/02/06/attention-to-detail-in-rich-internet-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe AIR: Is breaking out of the browser the right next step?</title>
		<link>http://danny-t.co.uk/index.php/2007/11/18/adobe-air-is-breaking-out-of-the-browser-the-right-next-step/</link>
		<comments>http://danny-t.co.uk/index.php/2007/11/18/adobe-air-is-breaking-out-of-the-browser-the-right-next-step/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 19:03:20 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/index.php/2007/11/18/adobe-air-is-breaking-out-of-the-browser-the-right-next-step/</guid>
		<description><![CDATA[If you read my blog regularly, you&#8217;ll know I was quick to jump on the AIR trip. I do still very much like AIR, have seen some good AIR apps and believe it has some good potential. I&#8217;ve played with a couple of AIR apps, have seen several AIR presentations (even presented one) and made [...]]]></description>
			<content:encoded><![CDATA[<p>If you read my blog regularly, you&#8217;ll know I was quick to jump on the AIR trip. I do still very much like AIR, have seen some good AIR apps and believe it has some good potential. I&#8217;ve played with a couple of AIR apps, have seen several AIR presentations (<a href="http://www.lfpug.com/apollo-the-unoffcial-wtf/">even presented one</a>) and made <a href="http://danny-t.co.uk/index.php/category/apollo/page/2/">numerous blog posts</a> about it. So I feel I&#8217;m justified in my <em>opinion</em> that I&#8217;m not completely convinced that this is the best next step for RIAs, or at least not the best place we can end up.</p>
<p>I mentioned &#8220;played with a <em>couple</em> of AIR apps&#8221;, why only two? To be honest it&#8217;s probably slightly more, but still only very few. I&#8217;ve downloaded and installed the <a href="http://www.pownce.com/download/">Pownce AIR app</a>, now uninstalled as I didn&#8217;t use it. I downloaded and installed the <a href="http://finetune.com/desktop/">Finetune AIR app</a>, now uninstalled as I don&#8217;t keep much music on my computer and so it didn&#8217;t offer me much more than the in-browser version. I&#8217;ve also downloaded a couple of other apps out of interest but only was looking out of my interest in AIR and not so much because of the usefulness of the app. All gone, I currently have zero AIR apps installed.</p>
<p>The fact I uninstalled them isn&#8217;t really the point i&#8217;m trying to make, for me, those apps just didn&#8217;t add much value so I removed them, that could be the same as on any platform. The thing that bothers me about AIR apps is how few I can be bothered to try. I generally am not that inclined to download and install the applications in the first place. This is because breaking out of the browser breaks up my user experience. I love RIAs, I love the ease in which I can access, use and share them. These things just aren&#8217;t as good when I have to download and install the application I want to use, I just want to use it.</p>
<p>Okay, so the features that AIR offers aren&#8217;t available to the Flash player and I do think those features are hugely valuable. I just don&#8217;t think running an RIA as a completely separate entity to the browser works too well. A large draw for an RIA is simplicity and availability, both of which out-of-browser RIAs restrict.</p>
<p>Take <a href="http://preview.getbuzzword.com/">Buzzword</a>, which is a truely remarkable RIA and in my opinion is superior to any other online AND offline wordprocessing tool. I&#8217;ve not seen the AIR version of it which I believe is on it&#8217;s way and I can already see that what AIR offers will be a great addition to it. But wouldn&#8217;t it be even better if all the connectivity detection, local file storage, drag and drop etc were available to the in-browser version? If installing AIR gave me all those capabilities as an in-browser resource as well as a stand-alone runtime? Okay so no custom chrome for in-browser. Big deal! Apps like Buzzword already stamp such an impression with their branding and interface you really easily forget you have some boring browser buttons up there. We now have full-screen in Flash Player, let&#8217;s work out those secrity issues and make more use of that.</p>
<p>I know it&#8217;s not so easy with all the security sandbox constraints of running in browser but is there really that much difference to me saying &#8220;yes let this application i&#8217;m installing have access to the nether regions of my PC&#8221; vs &#8220;Oh, I tried to do something in this online app that wants access to my PC? Oh go on then let it&#8221;.</p>
<p>Security gurus can tell me that what i&#8217;m asking for isn&#8217;t possible and why it shouldn&#8217;t be, but I feel as long as I ultimately make the decision on what does and doesn&#8217;t have access then it shouldn&#8217;t matter whether this is in or out of browser. Am I alone in thinking this? Is this something that will be possible in the not-too-distant? I&#8217;ve not done enough homework to answer that but it certainly makes more sense to me as in some ways AIR feels like we&#8217;re taking a step backwards.</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2007/11/18/adobe-air-is-breaking-out-of-the-browser-the-right-next-step/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>SWX RSS reader in 3 minutes</title>
		<link>http://danny-t.co.uk/index.php/2007/11/10/swx-rss-reader-in-3-minutes/</link>
		<comments>http://danny-t.co.uk/index.php/2007/11/10/swx-rss-reader-in-3-minutes/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 18:38:34 +0000</pubDate>
		<dc:creator>DannyT</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://danny-t.co.uk/index.php/2007/11/10/swx-rss-reader-in-3-minutes/</guid>
		<description><![CDATA[I just read Aral&#8217;s post about Florian&#8217;s SWXml (an xml parser for SWX). I finished reading that post at 18:22 and by 18:25 I&#8217;d loaded my blog&#8217;s 10 most recent posts into flash! That&#8217;s incredible on the easy scale. All i&#8217;ve ever done with SWX before now was the moo-card tutorial (which is about 4 [...]]]></description>
			<content:encoded><![CDATA[<p>I just read <a href="http://aralbalkan.com/1075">Aral&#8217;s post</a> about <a href="http://www.video-flash.de/index.php/swxml-xml-api-for-swx/">Florian&#8217;s SWXml</a> (an xml parser for SWX). I finished reading that post at 18:22 and by 18:25 I&#8217;d loaded my blog&#8217;s 10 most recent posts into flash!</p>
<p>That&#8217;s incredible on the easy scale. All i&#8217;ve ever done with SWX before now was the <a href="http://aralbalkan.com/1007">moo-card tutorial</a> (which is about 4 lines of code) since my <a href="http://danny-t.co.uk/index.php/2007/11/09/fotb-07-round-up/">FOTB pledge to myself</a>. </p>
<p>I even struggled with some basic AS syntax (array.length not .count as i was trying), so if I used Flash regularly I think that would have taken me around one minute to do. I had to do this for a project I worked on some months back and it took me best part of a day to get everything in place, setting up a php to xml parser loading the xml into flash, xmlObj-ing the xml when loaded!</p>
<p>+10 kudos points to Aral<br />
+10 kudos points to Florian</p>
<p>My SWX RSS reader:</p>
<p>[kml_flashembed movie="/projects/swx/RSSReader/RSSReader.swf" width="252" height="167" /]<br />
and just so you know how easy: <a href="/projects/swx/RSSReader/RSSReader.fla">here is the source</a></p>
<p>Okay it&#8217;s not brilliant, but less than 3 minutes!</p>
]]></content:encoded>
			<wfw:commentRss>http://danny-t.co.uk/index.php/2007/11/10/swx-rss-reader-in-3-minutes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

