<?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>James Whittaker</title>
	<atom:link href="http://jameswhittaker.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jameswhittaker.com</link>
	<description>Front-end Developer, Designer and Consultant</description>
	<lastBuildDate>Sat, 19 Sep 2009 17:36:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Fixing 3 Mobile Broadband E168G on Snow Leopard</title>
		<link>http://jameswhittaker.com/journal/fixing-3-mobile-broadband-e168g-on-snow-leopard/</link>
		<comments>http://jameswhittaker.com/journal/fixing-3-mobile-broadband-e168g-on-snow-leopard/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 17:35:03 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=342</guid>
		<description><![CDATA[
After upgrading my Macbook Pro to Snow Leopard I found that my 3 Mobile Broadband USB (Huawei Mobile Connect E169G) stick no longer functioned. The quite frankly rubbish MobileConnect software that they have on the stick refused to start on Snow Leopard and promptly crashed every time.

So after some fiddling and searching around the interwebs [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/3mobilesnowlfix.jpg" alt="3mobilesnowlfix" title="3mobilesnowlfix" width="535" height="150" class="aligncenter size-full wp-image-343 bdr" /></p>
<p>After upgrading my Macbook Pro to Snow Leopard I found that my <a href="http://www.three.co.uk/Mobile_Broadband/What_is_Mobile_Broadband_">3 Mobile Broadband USB</a> (Huawei Mobile Connect E169G) stick no longer functioned. The quite frankly rubbish MobileConnect software that they have on the stick refused to start on Snow Leopard and promptly crashed every time.</p>
<p><span id="more-342"></span></p>
<p>So after some fiddling and searching around the interwebs I finally got it working again, all without that horrible MobileConnect stuff.</p>
<p>Firstly you need to remove all of the software and drivers that might be on your machine, delete the following if they are there:</p>
<p>/Applications/MobileConnect<br />
/System/Library/Extensions/HuaweiDataCardDriver.kext<br />
/Library/Modem Scripts/HUAWEI Mobile Connect </p>
<p>Don&#8217;t worry if none of the above are there, it&#8217;s worth checking before you go any further.</p>
<p>Now reboot your Mac. When restarted pop in your USB Modem stick it should appear in the finder as a CD. Open it up and you will see the Mobile Connect app. Right click and select &#8220;Show Package Contents&#8221;.</p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/Mobile-connect.png" alt="Mobile connect" title="Mobile connect" width="476" height="358" class="aligncenter size-full wp-image-344" /></p>
<p>Then navigate to Contents/Resources/Mobile_Connect_Drv_App.pkg. Double click this to run the driver only installation.</p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/Finder.png" alt="Finder" title="Finder" width="343" height="185" class="aligncenter size-full wp-image-346 bdr" /></p>
<p>After this has installed head over to Network Preferences window. If there is an existing HUAWEI Mobile listed in the left menu, select it and hit the minus button to delete it.</p>
<p>Now go and add a new one choosing HUAWEI Mobile from the Interface dropdown, giving it a name if you wish. Now in the telephone Number enter *99#, leaving the remaining fields blank. Keep the &#8220;Show modem status in menubar&#8221; checked because you then get quick instant access for dialling up with your new HUAWEI Mobile connection. </p>
<p>Hit Advanced entering the following details for 3 Mobile Boradband UK. APN: 3internet. Your APN might be different if your not in the UK.</p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/System-Preferences.png" alt="System Preferences" title="System Preferences" width="463" height="207" class="aligncenter size-full wp-image-345 bdr" /></p>
<p>You should be all set, go and connect. Working 3<a href="http://www.three.co.uk/Mobile_Broadband/What_is_Mobile_Broadband_"> Mobile Broadband</a> (UK) with the HUAWEI E169G on Snow Leopard.</p>
<p>Please leave any comments or suggestions.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/fixing-3-mobile-broadband-e168g-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>The best way to buy an iPhone?</title>
		<link>http://jameswhittaker.com/journal/the-best-way-to-buy-an-iphone/</link>
		<comments>http://jameswhittaker.com/journal/the-best-way-to-buy-an-iphone/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 14:19:25 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=328</guid>
		<description><![CDATA[
I have been looking to purchase an iPhone since the launch of the 3Gs. The original plan was to make a purchase while I was on holiday in Italy during August, the primary reason for this was because unlike our unhelpful country here in the UK Italy by law has to sell unlocked phones and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/iphonedilema.jpg" alt="iphonedilema" title="iphonedilema" width="535" height="150" class="alignnone size-full wp-image-329 bdr" /></p>
<p>I have been looking to purchase an <a href="http://www.apple.com/uk/iphone/">iPhone</a> since the launch of the 3Gs. The original plan was to make a purchase while I was on holiday in Italy during August, the primary reason for this was because unlike our unhelpful country here in the UK Italy by law has to sell unlocked phones and I needed a new phone after surrendering my free Nokia when I left to join <a href="http://tweetdeck.com">Tweetdeck</a>.</p>
<p>I knew the cost for the iPhone would be expensive due to the euro exchange rate but well worth not being tied in to an operator and having the freedom to use any SIM plan I like. This would also have the advantage of easy upgrade when <a href="http://www.apple.com/uk">Apple</a> release the next generation of iPhone.</p>
<p><span id="more-328"></span></p>
<p>So off we go to Italy and I casually approached a number of stores in <a href="http://en.wikipedia.org/wiki/Rome">Rome</a>, our first port of call on our trip. The first store I tried was an o<a href="http://www.vodafone.it/">fficial Vodafone store</a>. The response was quite short and sweet &#8220;iPhone all finished&#8221; I was told. Hmm &#8220;all finished?&#8221;: i questioned, &#8220;yes all gone, finished&#8221;. So off I go to the <a href="http://www.tre.it/">Three Italy store</a> further down the street. Again I got the response &#8220;iPhone all finished&#8221;. What was going on. After further enquiry the assistant also informed me that the Three iPhones could only be purchased with an Italian credit card as you got a free data plan with them. I offered to pay cash and not have the plan but the assistant informed me that was not possible, plus they had no stock anyway.</p>
<p>After visiting over 11 stores in Rome, Milan and Venice I got a very similar response, in short no iPhones. I was unsure if it was because I was English and they had been &#8216;advised&#8217; not to sell to anyone who was not Italian or that there was truly no stock in the whole of Italy.</p>
<p>So I returned to the UK iPhone less and a bit disheartened, I personally know two people who have purchased their iPhones 3G&#8217;s from Italy with no hassle.</p>
<p>My next option was to purchase <a href="http://www.play.com/Mobiles/Mobile/-/2334/1601/-/10674553/Apple-iPhone-3G-S-32GB-Sim-Free-Unlocked-3-0-Megapixel-Mobile-Phone/Product.html?searchtype=genre">a legitimate iPhone 3Gs 32GB from Play.com</a>. They appear to be the only company shipping original unlocked phones from manufacturers. Oh wait a minute they want £899.99 for a 32GB 3Gs!!! Are they serious that is the price of a decent laptop, then add on your airtime billing no way Jose. So moving on it&#8217;s back to the <a href="http://www.o2.co.uk/">O2</a>, the UK&#8217;s official iPhone provider. </p>
<p>I don&#8217;t have anything against <a href="http://www.o2.co.uk/">O2</a>, I just was against being locked in for 18 months plus all of the hassle of upgrading. Plus the likelihood of Apple releasing a new upgraded iPhone in the next 12 months is quite high.</p>
<p>So after having a chat over a few beers with my mate Richard (<a href="http://www.twitter.com/richardcornock">@richardcornock</a>) he enlightened me to the fact that you could grab a pretty decent <a href="http://shop.o2.co.uk/sim-only-simplicity">SIM only package from O2 (simplicity)</a> and use that in a Pay As You Go iPhone. On the surface this sounded like a more expensive option but after close investigation it is the clear winner for me, here how it breaks down.</p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/o2simpicity.png" alt="o2simpicity" title="o2simpicity" width="505" height="121" class="aligncenter size-full wp-image-338" /></p>
<p>A PAYG iPhone 32GB costs a hefty £538.30 from O2. This comes with a PAYG SIM card that offers free data and free Wi-Fi (with BT &#038; The Cloud). Of course your calls are going to be really expensive on PAYG. The Simplicity plan from O2 comes in a variety of flavours and varies in time from a 1 month rolling contract to a 12 month contract. The benefit of ordering on line and going for the 12 month tariff are increased minutes and texts PLUS a free O2 bundle. For only £19.58 (correct as of Sept 2009) you get 800 anytime UK minutes plus 1600 texts and free data via the bolt on.</p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/o2iphonetariff.png" alt="o2iphonetariff" title="o2iphonetariff" width="535" height="198" class="aligncenter size-full wp-image-339" /></p>
<p>Compare that to the iPhone tariff of £34.26 that only gives you 500 minutes and 600 texts. You DO get free Wi-Fi with your iPhone tariff that you lose with the Simplicity although you could add this on using a bolt on for around £7 a month. I have heard that you can still use your PAYG SIM number to use the Wi-Fi as it&#8217;s tied to the IMEI number of your iPhone, this is as of yet untested.</p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/iPhone-plans-15-31-36.png" alt="iPhone-plans 15-31-36" title="iPhone-plans 15-31-36" width="535" height="482" class="aligncenter size-full wp-image-340" /></p>
<p>So you can see where I&#8217;m going with this, if you can live without the Wi-Fi bundle then the overall cost to you for 12 months 32GB iPhone 3Gs goodness is £773.26 (800 min&#8217;s &#038; 1600 txt&#8217;s) compared with £890.91 on the iPhone 18 month tariff (500 min&#8217;s &#038; 600 txt&#8217;s). Total cost of ownership is virtually the same over the course of 18 months £890.00 but you get more minutes and more text&#8217;s plus your not locked in for 18 months with the PAYG phone and can upgrade when you like!</p>
<p>If you have the hard earned cash to stump up front then work your figures out, it might not be an unlocked iPhone but I&#8217;m still in a better position with more minutes &#038; texts! </p>
<p>Please leave your comments and thoughts.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/the-best-way-to-buy-an-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I&#8217;m joining TweetDeck!</title>
		<link>http://jameswhittaker.com/journal/im-joining-tweetdeck/</link>
		<comments>http://jameswhittaker.com/journal/im-joining-tweetdeck/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 10:06:25 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[tweetdeck]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=331</guid>
		<description><![CDATA[
Yes that&#8217;s correct I&#8217;m leaving my position as front end architect for Nokia Music and heading off down to London town to join the TweetDeck team. 
If your not sure what TweetDeck is then where have you been?!
I have known Iain for a few years now and have been really impressed by what he has [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/tweetdeck.jpg" alt="tweetdeck" title="tweetdeck" width="535" height="150" class="alignnone size-full wp-image-332 bdr" /></p>
<p>Yes that&#8217;s correct I&#8217;m leaving my position as front end architect for <a href="http://musicstore.nokia.com/">Nokia Music</a> and heading off down to London town to join the <a href="http://tweetdeck.com">TweetDeck</a> team. </p>
<p>If your not sure what <a href="http://tweetdeck.com">TweetDeck</a> is then where have you been?!</p>
<p>I have known <a href="http://iain.posterous.com/">Iain</a> for a few years now and have been really impressed by what he has achieved with <a href="http://tweetdeck.com">TweetDeck</a>. So when the offer came to join the team how could I refuse, oh and I get to work at the &#8216;bat cave&#8217;!. </p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/tweetdeck-air.jpg" alt="tweetdeck-air" title="tweetdeck-air" width="300" height="207" class="alignleft size-full wp-image-333" /></p>
<p>Having been involved in the Flash and Flex community for a number of years and more recently with <a href="http://www.adobe.com/go/air">Adobe AIR</a> as a <a href="http://www.adobe.com/communities/experts/all.html">Community Expert</a> it&#8217;s going to be great working with these technologies on a daily basis. </p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/09/tweetdeck-iphone.jpg" alt="tweetdeck-iphone" title="tweetdeck-iphone" width="128" height="224" class="alignright size-full wp-image-334" /></p>
<p>Combining my knowledge of UI, UX and development with my recent mobile device experience I really feel that we can take the TweetDeck proposition to new heights across multiple platforms reaching to and connecting people world wide. It&#8217;s an exciting time.</p>
<p>I&#8217;m sure I will see some of you around London town and might even pop along to some of the London Flash community meetups.</p>
<p>The latest release of <a href="http://tweetdeck.com">TweetDeck</a> and the <a href="http://tweetdeck.com/directory">TweetDeck Directory</a> are fantastic if your not using Tweetdeck then <a href="http://tweetdeck.com">get it</a>. There really is no better way of keeping track of your social connections across Twitter, Facebook, MySpace and more.</p>
<p><span id="more-331"></span></p>
<h4>Andrew Shorten (Adobe EMEA Evangelist) interviews TweetDeck founder</h4>
<p><object width="535" height="294"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6504210&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6504210&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="535" height="294"></embed></object></p>
<p>Let us know what you like and don&#8217;t like about any TweetDeck products by <a href="http://support.tweetdeck.com/portal">visiting the support site</a>. </p>
<p>As you can imagine things have been a little busy of late, but I&#8217;ll still be running the Adobe AIR website <a href="http://refreshingapps.com">RefreshingApps</a> and speaking at more conferences and community events. Don&#8217;t forget to follow me <a href="http://twitter.com/jmwhittaker">@jmwhittaker</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/im-joining-tweetdeck/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>My Flex &amp; AIR tutorial in .NET mag</title>
		<link>http://jameswhittaker.com/journal/flex-air-tutorial-in-net-mag/</link>
		<comments>http://jameswhittaker.com/journal/flex-air-tutorial-in-net-mag/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 13:07:52 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[netmag]]></category>
		<category><![CDATA[pomodoro technique]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=326</guid>
		<description><![CDATA[
I&#8217;m really excited to have my first tutorial published in the premier web design magazine .NET issue 192 (Practical Web Design in the USA). The 4 page tutorial uses Flex and Adobe AIR to create a desktop application for uploading and viewing your movies on YouTube. All tutorial files and the finished AIR application are [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/08/netmagtutorial192.jpg" alt="netmagtutorial192" title="netmagtutorial192" width="535" height="150" class="alignnone size-full wp-image-327 bdr" /></p>
<p>I&#8217;m really excited to have my first tutorial published in the premier web design magazine .NET <a href="http://www.netmag.co.uk/zine/latest-issue/issue-192">issue 192</a> (Practical Web Design in the USA). The 4 page tutorial uses Flex and Adobe AIR to create a desktop application for uploading and viewing your movies on YouTube. All tutorial files and the finished AIR application are packaged on the CD with the <a href="http://www.netmag.co.uk/zine/latest-issue/issue-192">magazine</a>.</p>
<p><span id="more-326"></span></p>
<p>Using a few open source API&#8217;s the tutorial guides you through creating the project in Flex Builder importing the libraries and instructs on how to create a SWC for use across many projects. Moving on we cover basic Flex UI elements like lists, item renderers, view states and stacks. Finally simple skinning and styling then it guides the user through exporting the final AIR installer file.</p>
<p>The great thing about this tutorial is that you can build upon it in so many ways. Maybe add some <a href="http://www.degrafa.org">Degrafa</a> to the UI and create a great interface, or mix it up with some more web API&#8217;s. There is also some useful links, a quick guide on creating the AIR installer badge for your app and where to find more interesting AIR applications like <a href="http://refreshingapps.com">RefreshingApps.com</a>.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_AIRInstallBadge_277515692"
			class="flashmovie"
			width="215"
			height="180">
	<param name="movie" value="/wordpress/wp-content/uploads/flash/air/AIRInstallBadge.swf" />
	<param name="flashvars" value="airversion=1.0&appname=YouTubeUploader&appurl=http://jameswhittaker.com/wordpress/wp-content/uploads/air/YouTubeUploader/YouTubeUploader.air&image=http://jameswhittaker.com/wordpress/wp-content/uploads/air/YouTubeUploader/badge_icon.png&appid=YouTubeUploader&appversion=v0.1&str_installing=Installing%20YouTubeUploader&str_installingtext=Please%20wait%20while%20the%20YouTube%20AIR%20application%20installs." />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/wordpress/wp-content/uploads/flash/air/AIRInstallBadge.swf"
			name="fm_AIRInstallBadge_277515692"
			width="215"
			height="180">
		<param name="flashvars" value="airversion=1.0&appname=YouTubeUploader&appurl=http://jameswhittaker.com/wordpress/wp-content/uploads/air/YouTubeUploader/YouTubeUploader.air&image=http://jameswhittaker.com/wordpress/wp-content/uploads/air/YouTubeUploader/badge_icon.png&appid=YouTubeUploader&appversion=v0.1&str_installing=Installing%20YouTubeUploader&str_installingtext=Please%20wait%20while%20the%20YouTube%20AIR%20application%20installs." />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>You can also <a href="http://jameswhittaker.com/wordpress/wp-content/uploads/air/YouTubeUploader/YouTubeSrc.zip">download the source files</a> for the tutorial <a href="http://jameswhittaker.com/wordpress/wp-content/uploads/air/YouTubeUploader/YouTubeSrc.zip">here</a> (ZIP 1.3MB).</p>
<p>I have had some great feedback from this and hopefully the <a href="http://www.netmag.co.uk">.NET</a> guys will ask me to do another tutorial soon.  </p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flex-air-tutorial-in-net-mag/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Speaking at Bath Camp</title>
		<link>http://jameswhittaker.com/journal/speaking-at-bath-camp/</link>
		<comments>http://jameswhittaker.com/journal/speaking-at-bath-camp/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 15:09:08 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=324</guid>
		<description><![CDATA[
I&#8217;m really excited to be presenting a session on Adobe AIR at Bath Camp on July 1st. It&#8217; going to be an introductory session into what Adobe AIR is, how you can develop for it and a view of some cool apps created using the framework.
Bath Camp is going to be the first non Adobe [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/06/bathcamp.jpg" alt="bathcamp" title="bathcamp" width="535" height="150" class="alignnone size-full wp-image-325 bdr" /></p>
<p>I&#8217;m really excited to be <a href="http://bathcamp.ning.com/xn/detail/2471223:Event:4161">presenting a session on Adobe AIR at Bath Camp on July 1st</a>. It&#8217; going to be an introductory session into what Adobe AIR is, how you can develop for it and a view of some cool apps created using the framework.</p>
<p><a href="http://bathcamp.ning.com">Bath Camp</a> is going to be the first non Adobe focused event that I&#8217;m speaking at so it&#8217;s a great chance to meet up with other developers and designers from the Bath &#038; Bristol region.</p>
<p><span id="more-324"></span></p>
<p>Looking at the <a href="http://bathcamp.ning.com">Bath Camp Ning pages</a> I will be following in the footsteps of Paul Boag (<a href="http://www.boagworld.com">Boagworld</a> &#038; <a href="http://www.headscape.co.uk">Headscape</a>) and <a href="http://ryancarson.com/">Ryan Carson</a> (<a href="http://www.carsonified.com">Carsonified</a>) who have previously delivered sessions.</p>
<p>Also confirmed is Joe Leech from usability consultancy <a href="http://www.cxpartners.co.uk/">CX Partners</a> who is talking about user centered design, usability and all good stuff like that.</p>
<p>So if you are around Bath and fancy coming along and saying hi over a beer or two register here and we&#8217;ll see you there from around 7pm onwards at the Assembly Inn (see map below).</p>
<p><iframe width="535" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=the+assembly+inn+bath+BA1+2QU&amp;sll=51.385214,-2.361846&amp;sspn=0.008865,0.016501&amp;ie=UTF8&amp;cid=9047235945170890088&amp;ll=51.391976,-2.353821&amp;spn=0.018745,0.045919&amp;z=14&amp;iwloc=A&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=the+assembly+inn+bath+BA1+2QU&amp;sll=51.385214,-2.361846&amp;sspn=0.008865,0.016501&amp;ie=UTF8&amp;cid=9047235945170890088&amp;ll=51.391976,-2.353821&amp;spn=0.018745,0.045919&amp;z=14&amp;iwloc=A" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/speaking-at-bath-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skinning Flex with Degrafa and FXG</title>
		<link>http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/</link>
		<comments>http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 17:35:50 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[degrafa]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[fxg]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=322</guid>
		<description><![CDATA[
For my session at Flash Camp Birmingham I wanted to introduce people to declarative skinning within Flex. I was skinning Flex applications back in Flex 2 and to get the right visual appeal it was quite a tricky thing to get right. There was a reliance on heavy external assets brought into Flex and scaled [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/06/fcsession.jpg" alt="fcsession" title="fcsession" width="535" height="150" class="alignnone size-full wp-image-321 bdr" /></p>
<p>For my session at <a href="http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/">Flash Camp Birmingham</a> I wanted to introduce people to declarative skinning within Flex. I was skinning Flex applications back in Flex 2 and to get the right visual appeal it was quite a tricky thing to get right. There was a reliance on heavy external assets brought into Flex and scaled using Scale9 techniques. There were many times I wanted to have better control of the UI I was creating through not only a more advanced CSS capability but without having to resort to creating skins from scratch directly with the Flash drawing API.</p>
<p><span id="more-322"></span></p>
<p><a href="http://www.degrafa.org">Degrafa</a> is a declarative graphics framework for Flex (and soon for pure ActionScript projects). It makes sense using MXML like syntax for creating your graphical skins. The work the <a href="http://www.degrafa.org">Degrafa</a> team have done is amazing, I had a very good email conversation with Jaun Sanchez of Effective UI before my talk so that I could clarify a few things and get an insight into the future of <a href="http://www.degrafa.org">Degrafa</a>, especially with Flex 4 and <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> from Adobe going into public beta.</p>
<p><a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> is a graphical interchange format developed by Adobe and is similar in many ways to SVG. Adobe are building future tooling to take advantage of this format and enable rich graphics to be transferable between developer and designer tools. <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> is also similar in approach to <a href="http://www.degrafa.org">Degrafa</a> the syntax is very alike. Both have their place and advantages and disadvantages depending upon your toolset choice and project requirements.</p>
<h4>Flash Camp session slides</h4>
<p>Here are my session slides for Flash Camp Birmingham (UK), 16th June 2009. Taking an introductory look at <a href="http://www.degrafa.org">Degrafa</a> and <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> I demonstrated the code for skinning a simple UI in both implementations. The skin is part of a project i&#8217;m working on for creating a Palm Pre looking skin for Flex 3 with <a href="http://www.degrafa.org">Degrafa</a> and Flex 4 with <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a>.</p>
<p>As you can see in the examples further down the page they are very visually close! The full skin will be available soon but for now take a look at the code and I welcome any comments or suggestions on my implementation.</p>
<div style="width:425px;text-align:left" id="__ss_1612839"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=perfectingtheusersexpinair-1228645472343018-8&#038;rel=0&#038;stripped_title=flash-camp-degrafa-fxg" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=perfectingtheusersexpinair-1228645472343018-8&#038;rel=0&#038;stripped_title=flash-camp-degrafa-fxg" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<h4>Degrafa skin</h4>
<p>For this skin I&#8217;m using Flex 3 and a CSS file to target the skin classes for the components. To get a Degrafa skin to match the width and height of the component you no longer need to override the updateDisplayList() method. There are two exposed variables called skinWidth and skinHeight that you should use.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FlashCamp2_214749910"
			class="flashmovie"
			width="300"
			height="400">
	<param name="movie" value="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/degrafa/FlashCamp2.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/degrafa/FlashCamp2.swf"
			name="fm_FlashCamp2_214749910"
			width="300"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>The MXML structure for this Flex 3 example is simply:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">	<span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span> xmlns:degrafa=<span style="color: #ff0000;">&quot;http://www.degrafa.com/2007&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Style</span> source=<span style="color: #ff0000;">&quot;default.css&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TabNavigator</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> width=<span style="color: #ff0000;">&quot;250&quot;</span> height=<span style="color: #ff0000;">&quot;380&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> label=<span style="color: #ff0000;">&quot;Menu item 1&quot;</span> verticalGap=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Button A&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Button B&quot;</span> selected=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> styleName=<span style="color: #ff0000;">&quot;preItem&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Text</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> styleName=<span style="color: #ff0000;">&quot;preItem&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Text</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Box</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> styleName=<span style="color: #ff0000;">&quot;preItem&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Text</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Box</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:TabNavigator</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Then the Degrafa button is skinned as follows (refer to the source in the download for full code):</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">	<span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;">&lt;GraphicBorderSkin xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> xmlns=<span style="color: #ff0000;">&quot;http://www.degrafa.com/2007&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- use skinWidth and skinHeight for setting component dimensions --&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;fills<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientFill id=<span style="color: #ff0000;">&quot;topHighlight&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.2&quot;</span> alpha=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientFill<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientFill id=<span style="color: #ff0000;">&quot;upFill&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#8A8A8A&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#595957&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.45&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#4E4E50&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.55&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#686B6B&quot;</span> ratio=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientFill<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientFill id=<span style="color: #ff0000;">&quot;overFill&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#8AA2BE&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#525C68&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.45&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#464E58&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.55&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#6A7686&quot;</span> ratio=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientFill<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/fills<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;strokes<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;SolidStroke color=<span style="color: #ff0000;">&quot;#676767&quot;</span> id=<span style="color: #ff0000;">&quot;upStroke&quot;</span> weight=<span style="color: #ff0000;">&quot;0.5&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientStroke id=<span style="color: #ff0000;">&quot;highlightStroke&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.6&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.3&quot;</span> alpha=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientStroke<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/strokes<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;geometry<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;GeometryComposition<span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;RoundedRectangle id=<span style="color: #ff0000;">&quot;buttonRect&quot;</span></span>
<span style="color: #000000;">								  width=<span style="color: #ff0000;">&quot;{skinWidth}&quot;</span></span>
<span style="color: #000000;">								  height=<span style="color: #ff0000;">&quot;{skinHeight}&quot;</span></span>
<span style="color: #000000;">								  cornerRadius=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">								  fill=<span style="color: #ff0000;">&quot;{upFill}&quot;</span></span>
<span style="color: #000000;">								  stroke=<span style="color: #ff0000;">&quot;{upStroke}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;RoundedRectangle width=<span style="color: #ff0000;">&quot;{skinWidth-1}&quot;</span></span>
<span style="color: #000000;">								  x=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">								  y=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">								  height=<span style="color: #ff0000;">&quot;{skinHeight}&quot;</span></span>
<span style="color: #000000;">								  cornerRadius=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">								  stroke=<span style="color: #ff0000;">&quot;{highlightStroke}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/GeometryComposition<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/geometry<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;filters<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DropShadowFilter</span> color=<span style="color: #ff0000;">&quot;#676767&quot;</span></span>
<span style="color: #000000;">								 blurX=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								 blurY=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								 angle=<span style="color: #ff0000;">&quot;90&quot;</span></span>
<span style="color: #000000;">								 distance=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">								 alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;">&lt;/filters<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;states<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;upSkin&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;SetProperty target=<span style="color: #ff0000;">&quot;{buttonRect}&quot;</span> name=<span style="color: #ff0000;">&quot;fill&quot;</span> value=<span style="color: #ff0000;">&quot;{upFill}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/State<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;overSkin&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;SetProperty target=<span style="color: #ff0000;">&quot;{buttonRect}&quot;</span> name=<span style="color: #ff0000;">&quot;fill&quot;</span> value=<span style="color: #ff0000;">&quot;{overFill}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/State<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;SetProperty target=<span style="color: #ff0000;">&quot;{buttonRect}&quot;</span> name=<span style="color: #ff0000;">&quot;fill&quot;</span> value=<span style="color: #ff0000;">&quot;{overFill}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/State<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;selectedUpSkin&quot;</span> basedOn=<span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;selectedOverSkin&quot;</span> basedOn=<span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;/states<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;">&lt;/GraphicBorderSkin<span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p><a href="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/degrafa/srcview/FlashCamp2.zip">Download the Flex 3 source here</a>.</p>
<h4>FXG skin</h4>
<p>The MXML is slidghtly different here because of Flex 4 using the new Spark components. Not all components have been created in Spark so elements like tabNavigator are still Halo components. This is not an issue as you can mix and match Halo and Spark components with certain rules like a Halo navigator can only have a Halo container as it&#8217;s first child. Inside that container you can then place Spark components.</p>
<p>Looking around the Flex 4 SDK there is a set of Spark skins for Halo components so that is the technique I have used here. SparkSkin is the base class for these skins so I was able to skin the tabNavigator using FXG.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FlashCamp3_1915629238"
			class="flashmovie"
			width="300"
			height="400">
	<param name="movie" value="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/fxg/FlashCamp3.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/fxg/FlashCamp3.swf"
			name="fm_FlashCamp3_1915629238"
			width="300"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Using skinnableComponent you can then hang Spark skins off them as they support skinning (obviously!). So the simple MXML structure we have is:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> 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/halo&quot;</span> backgroundColor=<span style="color: #ff0000;">&quot;#333333&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Style</span> source=<span style="color: #ff0000;">&quot;styles/default.css&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TabNavigator</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> width=<span style="color: #ff0000;">&quot;250&quot;</span> height=<span style="color: #ff0000;">&quot;380&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> label=<span style="color: #ff0000;">&quot;Menu item 1&quot;</span> verticalGap=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>		
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> styleName=<span style="color: #ff0000;">&quot;preSkin&quot;</span> label=<span style="color: #ff0000;">&quot;Button A&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> styleName=<span style="color: #ff0000;">&quot;preSkin&quot;</span> label=<span style="color: #ff0000;">&quot;Button B&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SkinnableContainer</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:SkinnableContainer</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SkinnableContainer</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:SkinnableContainer</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SkinnableContainer</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:SkinnableContainer</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:TabNavigator</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Then as an example the skin for the button in FXG is:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">	<span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Skin</span> xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span style="color: #000000;">			xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span></span>
<span style="color: #000000;">			xmlns:ai=<span style="color: #ff0000;">&quot;http://ns.adobe.com/ai/2008&quot;</span></span>
<span style="color: #000000;">			xmlns:d=<span style="color: #ff0000;">&quot;http://ns.adobe.com/fxg/2008/dt&quot;</span></span>
<span style="color: #000000;">			minHeight=<span style="color: #ff0000;">&quot;35&quot;</span></span>
<span style="color: #000000;">			minWidth=<span style="color: #ff0000;">&quot;25&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:states</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;up&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;over&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;down&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;disabled&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:states</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Metadata</span><span style="color: #7400FF;">&gt;</span></span>[HostComponent(&quot;spark.components.Button&quot;)]<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Metadata</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Rect</span> id=<span style="color: #ff0000;">&quot;upFill&quot;</span></span>
<span style="color: #000000;">				top=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				right=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				left=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				bottom=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				radiusX=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">				radiusY=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:fill</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:LinearGradient</span> rotation=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#8A8A8A&quot;</span> color.over=<span style="color: #ff0000;">&quot;#8AA2BE&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#595957&quot;</span> color.over=<span style="color: #ff0000;">&quot;#525C68&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.45&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#4E4E50&quot;</span> color.over=<span style="color: #ff0000;">&quot;#464E58&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.55&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#686B6B&quot;</span> color.over=<span style="color: #ff0000;">&quot;#6A7686&quot;</span> ratio=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:LinearGradient</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:fill</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SolidColorStroke</span> color=<span style="color: #ff0000;">&quot;#676767&quot;</span> weight=<span style="color: #ff0000;">&quot;0.5&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Rect</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Rect</span> id=<span style="color: #ff0000;">&quot;highlightFill&quot;</span></span>
<span style="color: #000000;">				top=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				right=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				left=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				bottom=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				radiusX=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">				radiusY=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:LinearGradientStroke</span> rotation=<span style="color: #ff0000;">&quot;90&quot;</span> weight=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.6&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.2&quot;</span> alpha=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:LinearGradientStroke</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Rect</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> id=<span style="color: #ff0000;">&quot;labelElement&quot;</span></span>
<span style="color: #000000;">					  color=<span style="color: #ff0000;">&quot;#FFFFFF&quot;</span></span>
<span style="color: #000000;">					  right=<span style="color: #ff0000;">&quot;20&quot;</span></span>
<span style="color: #000000;">					  left=<span style="color: #ff0000;">&quot;20&quot;</span></span>
<span style="color: #000000;">					  verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span></span>
<span style="color: #000000;">					  horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span></span>
<span style="color: #000000;">					  verticalCenter=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:filters</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:DropShadowFilter</span> color=<span style="color: #ff0000;">&quot;#676767&quot;</span></span>
<span style="color: #000000;">								blurX=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								blurY=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								angle=<span style="color: #ff0000;">&quot;90&quot;</span></span>
<span style="color: #000000;">								distance=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">								alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:filters</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Skin</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p><a href="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/fxg/srcview/FlashCamp3.zip">Download the Flex 4 source here</a>.</p>
<h4>What&#8217;s next</h4>
<p>I&#8217;m looking to release the skins very soon and hopefully the guys at <a href="http://www.degrafa.org">Degrafa</a> will add it to the samples page. </p>
<p>If you have any feedback please leave them in the comments and please Tweet out this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flash Camp Birmingham write up</title>
		<link>http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/</link>
		<comments>http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 10:54:01 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=318</guid>
		<description><![CDATA[
Flash Camp Birmingham (UK) organised by the Flash Midlands user group. After a very good Flash Camp London it was always going to be interesting to see how the format would work outside of London. The answer very well! 

For those of you who are not familiar with a Flash Camp it&#8217;s basically a free [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/06/fcbhamtitle.jpg" alt="fcbhamtitle" title="fcbhamtitle" width="535" height="150" class="alignnone size-full wp-image-319 bdr" /></p>
<p>Flash Camp Birmingham (UK) organised by the <a href="http://www.flashmidlands.com">Flash Midlands user group</a>. After a very good <a href="http://jameswhittaker.com/journal/flashcamp-london-presentation/">Flash Camp London</a> it was always going to be interesting to see how the format would work outside of London. The answer very well! </p>
<p><span id="more-318"></span></p>
<p>For those of you who are not familiar with a Flash Camp it&#8217;s basically a free event run by the community for people working with or interested in the <a href="http://www.adobe.com/flashplatform/">Adobe Flash Platform</a>. It&#8217;s not a marketing event, although Adobe help with sponsorship, where prominent members of the community forego their time to come and give presentations and demos on the latest happenings with the Flash platform. And it costs nothing, how fantastic is that.</p>
<p>The sessions were 45 mins in length so long enough to give an insight into a particular topic kind of whetting you appetite for your own further study, yet short enough that it&#8217;s not too long until the next session.</p>
<p>So Birmingham it was at the Central Library theatre which was surprisingly good. A large screen and an auditorium that seated 250, the only thing that was lacking was a decent sized breakout area for mingling. There were some great sponsors, usability experts <a href="http://www.bunnyfoot.com">Bunnyfoot</a> were showing off their eye tracking system and it was great to see ex colleagues <a href="http://www.wayouteast.co.uk/">Jon</a> and Mark again. In fact it was like a mini reunion for quite a few people who I used to work with plus a good friend of mine Richard from the Birmingham Conservatoire made the event a really sociable affair.</p>
<p>So after a few network niggles the day started off with Adobe&#8217;s <a href="http://www.duvos.com/">Enrique Duvos</a> EMEA Evangelist manager introducing the latest product updates like Flash Builder, Flex 4, Catalyst and Flash player penetration rates. Enrique did a great job of setting the scene for later presentations.</p>
<h4>The sessions</h4>
<p><a href="http://www.newtriks.com/">Simon Bailey</a> was the first of us <a href="http://www.adobe.com/communities/experts/">Community Experts</a> to hit the stage on <a href="http://puremvc.org/">PureMVC</a>. Great delivery but possibly a bit over the heads of some of the audience! It was a great introduction and I certainly picked up a few tips and will be heading across to his <a href="http://www.newtriks.com/">blog</a> for more PureMVC stuff in the future.</p>
<p>A short break ensued before the infamous <a href="http://blog.flashgen.com/">Mike Jones aka Flashgen</a> hit the stage with a session on Flex components and a comparison between the new Spark components in Flex 4 and the old Halo components from Flex 2 &amp; 3. Really informative session on some of the core differences between Spark and Halo right down to how the component and skinning lifecycles differ. </p>
<p>Adobe have really gone down the correct path on the new Spark model. It addresses many of the concerns and limitations of the old Halo model by separating out the behaviour, layout and skin of components. Mike also takes the prize of phrase of the day for &#8220;datagrids are the Marmite of the component family&#8230;&#8221; thanks to <a href="http://elsabartley.co.uk/">Elsa</a> for making this <a href="http://twitter.com/marmaladegirl/statuses/2204494039">public on Twitter</a>!<br />
Mikes session was a good precursor to my session on skinning Flex.</p>
<p>So <a href="http://jameswhittaker.com">I</a> was up next with my session entitled &#8220;Skinning Flex&#8221;. I wanted introduce declarative graphics and take a look at what people can use today in their Flex 3 projects using <a href="http://www.degrafa.org">Degrafa</a>, then introduce <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> that arrives in Flex 4, the Creative Suite and of course <a href="http://labs.adobe.com/technologies/flashcatalyst/">Flash Catalyst</a>. After an introduction to the basics I demoed an example using a sample from my Palm Pre esque skin. One version was done in Flex 3 and Degrafa the other Flex 4 and FXG the results were virtually indistinguishable and showed how easy both are to work with. I didn&#8217;t get to show any Flash Catalyst due to time but the later Adobe OnTour session from Adobe by Enrique showed a detailed CS > Catalyst > Flex 4 &amp; Flash Builder demo. </p>
<p>Lunchtime followed and everyone was beginning to feel the heat inside the auditorium so the timing was perfect. Time for a chat and sandwich with old friends and we were back on again with <a href="http://www.infiniteturtles.co.uk/blog/">Rob Bateman</a> from <a href="http://www.away3d.com/">Away3D</a> up next. </p>
<p>I&#8217;m always very inspired and taken back by some of the Flash 3D demos I have seen (like <a href="http://www.sebleedelisle.com/">Seb Lee-Delisle</a> Papervision demos) and this was no exception. Many people don&#8217;t know that Away3D started life as a <a href="http://blog.papervision3d.org/">Papervision</a> branch back in the day. The speed and advancement of the features always amazes and Rob is always a step ahead of the game with the vision for Away3D. I&#8217;m not a 3D expert by any means and I wished I had the time to delve into it more. Some great demos were shown and I&#8217;m sure many were left very inspired.</p>
<p>I didn&#8217;t catch the session on mobile and FLash Lite from <a href="http://ribot.co.uk/">Anthony and Jerome Ribot</a> unfortunately although I heard it was an interesting session. Always good to get some mobile stuff to be shown. </p>
<p>After a short break the last session at Flash Camp Birmingham was a panel ready to answer questions on freelancing, contracting and how to break away from the company man. The entertaining panel consisted of <a href="http://www.flashgen.com">Mike Jones (Flashgen.com)</a>, <a href="http://www.muchosmedia.com/">Stefan Richter (Muchos Media)</a>, <a href="http://www.newtricks.com">Simon Bailey (Newtricks.com)</a> and Ross Flemming from specialist recruitment company <a href="http://www.teksystems.com/">TEK Systems</a>. Even the intros were great talking points hearing about how the panellists got into Flash Platform development. A few good questions were raised and answered. I personally think that having panels for open questions and discussion offer a interesting alternative to one way presentations and sessions that are usually delivered. </p>
<p>What followed was the prize giving and raffle. <a href="http://jodieorourke.com/">Jodie</a> I think you have a new career if all of this Flash stuff collapses! Very reminiscent of the end of Flash on the Beach many attendees had left already to catch transport home or just to get a breath of fresh air. Of the O&#8217;Reilly books being raffled out it was obvious that the Web 2.0 book by <a href="http://technoracle.blogspot.com/">Duane Nickull</a> was going to be the last on on peoples wish list no offense Duane! My ex colleague Greg (part of the Away 3D team) won a copy of Flash Builder and a couple of other lucky attendees got full passes to this year <a href="http://www.flashonthebeach.com/">Flash on the Beach courtesy of FOTB&#8217;s John Davey</a>.</p>
<p>So wrapping up another great Flash Camp for me again after London. I enjoyed my session on Degrafa and FXG and looking at some tweets afterwards the audience enjoyed it too. A bog thank you has to go to all the behind the scenes help from everyone involved that made this event flow smoothly and feel organised. Thanks also to the sponsors for making it happen and keeping free for the attendees. Until the next time happy coding.</p>
<h4>Photos</h4>
<p>Here are some photos by <a href="http://www.flickr.com/photos/marmaladegirl/tags/flashcamp/">Elsa from Flickr</a>:</p>
<p><object width="499" height="350"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2F&#038;user_id=23032561@N00&#038;tags=flashcamp&#038;jump_to=&#038;start_index="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2F&#038;user_id=23032561@N00&#038;tags=flashcamp&#038;jump_to=&#038;start_index=" width="499" height="350"></embed></object></p>
<h4>Videos</h4>
<p>Here are some videos that I took with my <a href="http://flipvideo.co.uk/products_flip_mino.shtml#scene=sceneMain">Flip MinoHD</a>. A great camera but in HD it picks up every little shake of your hand so apologies for the shaky cam effect it was not intentional!</p>
<p><object width="499" height="287"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5225449&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5225449&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="499" height="287"></embed></object></p>
<p><object width="499" height="287"><param name="movie" value="http://www.youtube.com/v/PQT7Q27V5go&#038;hl=en&#038;fs=1&#038;fmt=18&#038;showsearch=0&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PQT7Q27V5go&#038;hl=en&#038;fs=1&#038;fmt=18&#038;showsearch=0&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="499" height="287"></embed></object></p>
<p><a href="http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/">See my next post for my presentation notes and code examples</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Start using the Pomodoro technique</title>
		<link>http://jameswhittaker.com/journal/start-using-the-pomodoro-technique/</link>
		<comments>http://jameswhittaker.com/journal/start-using-the-pomodoro-technique/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 20:57:23 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[pomodoro technique]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=316</guid>
		<description><![CDATA[
Having been in an agile working environment for the last few years, I&#8217;m certainly becoming more aware of how similar techniques can be used outside the office. 
I have recently come across the Pomodoro technique, it&#8217;s an interesting take on how to improve your personal productivity. As I do a lot of work outside of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/06/pomodoro.jpg" alt="pomodoro" title="pomodoro" width="535" height="150" class="alignnone size-full wp-image-317 bdr" /></p>
<p>Having been in an agile working environment for the last few years, I&#8217;m certainly becoming more aware of how similar techniques can be used outside the office. </p>
<p>I have recently come across the Pomodoro technique, it&#8217;s an interesting take on how to improve your personal productivity. As I do a lot of work outside of the office on personal and freelance projects I have struggled to get focus sometimes, this is where the Pomodoro Technique can be applied; to get your focus back on track. I have seen it referred to as one technique for a <a href="http://groups.google.com/group/solo-scrum/">solo scrum</a>.</p>
<p><span id="more-316"></span></p>
<p>The name comes from those plastic kitchen timers in the shape of a tomato (or pomodoro if your Italian). So how do you go about getting into using the technique? Well firstly there is a <a href="http://www.pomodorotechnique.com">comprehensive website that you can refer to</a> and even download a free PDF that details the technique.</p>
<p>To get you started I&#8217;ll give my outline of how to use the Pomodoro technique:</p>
<h4>Stop everything!</h4>
<p>Yes that&#8217;s right close your email, Twitter client your mobile phone anything that could be a distraction during your Pomodoro. It&#8217;s best to locate your self away from other people who could inadvertently cause you to break off, I normally go down to my office room and close the door.</p>
<h4>Estimate your work breaking down into tasks</h4>
<p>When working on a project just like in agile you will have a backlog, a list of all the story items that need to get done to complete your project. Now that list is too big and scary to tackle all at once so select a story to break down into tasks to do today. </p>
<p>Place these tasks onto your To Do Today list. When you have been using the technique for a little while you get better at estimating how much you can actually get done in each Pomodoro. Use this knowledge in your planning for future Pomodoros, just like in agile.</p>
<h4>Begin your Pomodoro</h4>
<p>Get a timer and set it for 25 minutes. It&#8217;s best that the timer does not make a ticking sound as this will be a major distraction! This is your work time begin and focus on the first task you have to complete without any interruption. If you have an interruption then there are a couple of ways in which you can tackle it, see the interruptions section further down. </p>
<h4>End of the Pomodoro</h4>
<p>When the timer goes off after 25 minutes STOP immediately. Don&#8217;t finish your task or say &#8216;just a couple of minutes&#8230;&#8217; STOP NOW.</p>
<p>This is where you take a 5 minute break, step away from the computer go and make a tea anything but think about your current task and nothing too brain intensive.</p>
<p>If you have note finished your task on the To Do Today list then fine just carry it over into your next Pomodoro. Just place a mark against it on the list to indicate you have spent 1 Pomodoro already on that particular task. If you finish within a Pomodoro then use the time wisely maybe you want to review what you have done, check for any obvious bugs or tidy your code formatting. Only if the task has been completed within the first ten minutes of a Pomodoro can you select the next task on your To Do Today list. </p>
<p>Now you start again. After the fourth Pomodoro it&#8217;s best to take a much longer break say half an hour or what ever suites you just as long as it&#8217;s more that 5 minutes and the same rules apply &#8211; no thinking about that task!</p>
<h4>Interuptions</h4>
<p>The Pomodoro technique classifies interruptions on two levels; internal and external. Internal is where you basically interrupt yourself. These are usually not urgent at all and could well be a distraction to your current task. External is where other people interrupt you that you have no control over. If there is no choice but to abandon the Pomodoro then you must void it completely, not ideal and should be avoided at all cost.</p>
<p>Make a note of the interruption under the heading of Unplanned &amp; Urgent on your To Do Today sheet. Mark with a U and a possible deadline date &amp; time if required (although this is rarely the case).</p>
<p>This is just a very simple guide to how I have started to use the technique on my personal projects to improve my focus and delivery. I would suggest that you <a href="http://www.pomodorotechnique.com">read the whole technique</a> and see how you can adapt it to your needs. You might be more comfortable with 45 minute Pomodoros for example.</p>
<p>What do you use to get focused and get things done? I&#8217;m interested in hearing how others tackle the problem especially on remote working and individual projects.</p>
<h4>Tools &amp; resources to help</h4>
<p>Being an interactive developer I was on the hunt for an AIR application to do the trick. I found a couple but ultimately found nothing that suited my needs directly so I have started to build my own. In the mean time checkout:</p>
<ul>
<li><a href="http://code.google.com/p/pomodairo/">Pomodairo AIR app built with Flex (Open Source)</a></li>
<li><a href="http://rickosborne.org/blog/index.php/2009/04/15/the-pomodoro-technique/">A very simple timer done in AIR</a></li>
</ul>
<p>Also for Mac there is the <a href="http://www.apple.com/downloads/macosx/development_tools/pomodorodesktopformac.html">Pomodoro desktop</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/start-using-the-pomodoro-technique/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex resources</title>
		<link>http://jameswhittaker.com/journal/flex-resources/</link>
		<comments>http://jameswhittaker.com/journal/flex-resources/#comments</comments>
		<pubDate>Fri, 22 May 2009 12:51:24 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=314</guid>
		<description><![CDATA[
Adobe Flex is a great platform to work with for creating rich engaging applications of all sizes for the web and now the desktop with AIR. Now we are at Flex version 3 and the next version Flex 4, which is the SDK, and the editor now called Flash Builder are just around the corner.
There [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/05/flexresources.jpg" alt="flexresources" title="flexresources" width="535" height="150" class="alignnone size-full wp-image-315 bdr" /></p>
<p><a href="http://www.adobe.com/go/flex">Adobe Flex</a> is a great platform to work with for creating rich engaging applications of all sizes for the web and now the desktop with <a href="http://refreshingapps.com">AIR</a>. Now we are at Flex version 3 and the next version Flex 4, which is the SDK, and the editor now called Flash Builder are just around the corner.</p>
<p>There are a number of resources, guides and articles that I use regularly when building Flex or AIR applications. This is a growing resource so bookmark the page and feel free to suggest anything that I may have missed.</p>
<p>Here we go then:</p>
<p><span id="more-314"></span></p>
<h4>Explorers</h4>
<ul>
<li><a href="http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html#">Flex 3 style explorer (Adobe)</a></li>
<li><a href="http://www.adobe.com/devnet/flex/tourdeflex/">Tour de Flex &#8211; Flex 3 component explorer also available as an AIR application (Adobe)</a></li>
<li><a href="http://ryanswanson.com/regexp/#start">Regular Expression explorer</a></li>
<li><a href="http://www.jamesward.com/easingFunctionFun/easingFunctionFun.html">Effects explorer (James Ward)</a></li>
<li><a href="http://www.efflex.org/">Designer effects for Flex components (Tink)</a></li>
</ul>
<h4>Guides and cheat sheets</h4>
<ul>
<li><a href="http://livedocs.adobe.com/flex/3/html/help.html?content=Part2_DevApps_1.html">Flex 3 Developers Guide (Adobe)</a></li>
<li><a href="http://livedocs.adobe.com/flex/3/langref/">Flex 3 Language Reference</a></li>
<li><a href="http://elromdesign.com/blog/2009/03/28/finally…-flex-builder-shortcut-cheat-sheet-for-mac-os/">Flex Builder cheat sheet (OS X)</a></li>
<li><a href="http://blogs.4point.com/armaghan.chaudhary/2009/04/remote-debugging-using-flex-builder-ide.html">Debug a remote application in Flex Builder</a></li>
</ul>
<h4>Coding standards, conventions and best practice</h4>
<ul>
<li><a href="http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions">The guidelines used by the Adobe team on the Flex SDK</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/best_practices_pt1.html">Flex best practices part 1 (Adobe DevNet)</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/best_practices_pt2.html">Flex best practices part 2 (Adobe DevNet)</a></li>
<li><a href="http://www.infoq.com/news/2008/04/top-10-flex-mistakes">Top 10 Flex mistakes</a></li>
</ul>
<h4>Flex performance</h4>
<ul>
<li><a href="http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html">AS3 and Flex optimisation techniques (Inside RIA)</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/client_perf.html">Improve client performance (Adobe DevNet)</a></li>
<li><a href="http://gauravj.com/blog/?p=20">Creating smaller SWF&#8217;s (3 part)</a></li>
</ul>
<h4>AIR performance</h4>
<ul>
<li><a href="http://www.gskinner.com/blog/archives/2009/05/idle_cpu_usage.html">Idle CPU usage in AIR (Grant Skinner)</a></li>
<li><a href="http://arno.org/arnotify/2009/05/writing-well-behaved-efficient-air-applications/">Writing efficient AIR applications (AIR core team developer)</a></li>
<li><a href="http://blogs.adobe.com/air/2009/05/performance_tips_for_adobe_air.html">AIR performance tips (Adobe AIR blog)</a></li>
</ul>
<h4>Styling &amp; skinning Flex</h4>
<ul>
<li><a href="http://www.loscavio.com/downloads/blog/flex3_css_list/flex3_css_list.htm">Flex 3 CSS properties list</a></li>
<li><a href="http://degrafa.org">Degrafa &#8211; declarative graphics framework for AS3 and Flex</a></li>
<li><a href="http://axiis.org/">Axiis &#8211; data visualisation in open source</a></li>
</ul>
<h4>External Libraries</h4>
<ul>
<li><a href="http://code.google.com/p/flexlib/">Flexlib &#8211; open source components (Google code)</a></li>
<li><a href="http://code.google.com/p/as3corelib/">AS3CoreLib &#8211; open source core library (Google code)</a></li>
</ul>
<h4>Further help</h4>
<ul>
<li><a href="http://www.flexdeveloper.eu/forums/">Flexdeveloper.eu forum</a></li>
<li><a href="http://forums.adobe.com/community/flex">Adobe community forum for Flex</a></li>
<li><a href="http://www.actionscript.org/">ActionScript.org</a></li>
<li><a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=homepage&amp;productId=2">Adobe Flex Cookbook</a></li>
</ul>
<p>This is just a small list that you can use everyday. It&#8217;s not definitive and does not try to be.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flex-resources/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Camp Birmingham (UK)</title>
		<link>http://jameswhittaker.com/journal/flash-camp-birmingham-uk/</link>
		<comments>http://jameswhittaker.com/journal/flash-camp-birmingham-uk/#comments</comments>
		<pubDate>Thu, 21 May 2009 13:41:34 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=311</guid>
		<description><![CDATA[
Here we go it&#8217;s Flash Camp time again but in my area of the UK the Midlands!
There is a great mix of sessions to be had by some fantastic speakers so there should be something for all including designers, developers and general others. There are some great sponsors too so come down on the 16th [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/05/flashcampbirmingham.jpg" alt="flashcampbirmingham" title="flashcampbirmingham" width="535" height="150" class="alignnone size-full wp-image-312 bdr" /></p>
<p>Here we go it&#8217;s <a href="http://www.flashcamp.co.uk">Flash Camp</a> time again but in my area of the UK the Midlands!</p>
<p>There is a great mix of sessions to be had by some fantastic speakers so there should be something for all including designers, developers and general others. There are some great sponsors too so come down on the 16th June but remember to register today as places are limited. Also did I mention it&#8217;s FREE! </p>
<p>I&#8217;m excited to be <a href="http://www.flashcamp.co.uk/jameswhittaker.html">giving a session on Flex UI skinning</a>. Always a hot topic and with many ways to enhance the engagement and appearance of your Flex applications I will cover techniques you can implement today with the fantastic Degrafa framework. While taking a peek at what will be arriving in Flex 4 and Flash Catalyst with FXG. Oh yes baby!</p>
<p>So please come and say hi and collect a Moo card, I&#8217;ll be happy to help with any AIR or Skinning questions you may have or even just to talk about the weather.</p>
<p>Yes there is life outside of London in the Flash, Flex and RIA community. So sign up now for a hedonistic day of Flash Platform activity, cool sessions and the chance to meet other great people. I&#8217;m really interested to meet others from the Midlands area who are working on interactive projects using the Flash Platform. There appears to be quite an underground scene going on with many small agencies and freelancers that I&#8217;m only just discovering on my doorstep.</p>
<p>Register now at <a href="http://www.flashcamp.co.uk">Flash Camp (UK)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flash-camp-birmingham-uk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
