<?xml version="1.0" encoding="UTF-8"?>
<rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Dynamic Flash</title>
	<atom:link href="http://dynamicflash.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dynamicflash.com</link>
	<description>Confessions of a serial code abuser</description>
	<pubDate>Mon, 29 Sep 2008 20:00:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>FotB ‘08 Schedule: iCal feeds</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/405572981/</link>
		<comments>http://dynamicflash.com/2008/09/fotb-08-schedule-ical-feeds/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 18:14:18 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[calendar]]></category>

		<category><![CDATA[fotb08]]></category>

		<category><![CDATA[ical]]></category>

		<category><![CDATA[schedule]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/?p=161</guid>
		<description><![CDATA[In preparation for the start of Flash on the Beach &#8216;08 tomorrow, I have taken the schedule information and concerted it into a number of iCal feeds for your consumption. The events include locations, links and session sescriptions.

Subscribe to FotB 08 Schedule: Concert hall
Subscribe to FotB 08 Schedule: Corn Exchange
Subscribe to FotB 08 Schedule: Pavilion [...]]]></description>
			<content:encoded><![CDATA[<p>In preparation for the start of Flash on the Beach &#8216;08 tomorrow, I have taken the <a href="http://flashonthebeach.com/schedule/">schedule information</a> and concerted it into a number of iCal feeds for your consumption. The events include locations, links and session sescriptions.</p>
<ul>
<li><a href="webcal://icalexchange.com/public/spjwebster/FotB%2008:%20Concert%20Hall.ics">Subscribe to FotB 08 Schedule: Concert hall</a></li>
<li><a href="webcal://icalexchange.com/public/spjwebster/FotB%2008:%20Corn%20Exchange.ics">Subscribe to FotB 08 Schedule: Corn Exchange</a></li>
<li><a href="webcal://icalexchange.com/public/spjwebster/FotB%2008:%20Pavilion%20Theatre.ics">Subscribe to FotB 08 Schedule: Pavilion Theatre</a></li>
<li><a href="webcal://icalexchange.com/public/spjwebster/Flash%20on%20the%20Beach%2008%20Schedule.ics">Subscribe to FotB 08 Schedule: All Venues</a></li>
</ul>
<p><del>Note that I&#8217;ve made an educated guess at which sessions will be in which venues based on previous year&#8217;s schedules.</del> I have now confirmed the session venues with the official schedule. I will try to keep these up to date with any movements and changes as the conference progresses.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/405572981" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/09/fotb-08-schedule-ical-feeds/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/09/fotb-08-schedule-ical-feeds/</feedburner:origLink></item>
		<item>
		<title>Read and write local files with Flash Player 10</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/336126418/</link>
		<comments>http://dynamicflash.com/2008/07/flash-player-10-local-file-access/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 11:16:38 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 3]]></category>

		<category><![CDATA[actionscript3]]></category>

		<category><![CDATA[astro]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/?p=160</guid>
		<description><![CDATA[One of the features that I&#8217;m most looking forward to in Flash Player 10 (codenamed Astro) is local file access. Once the pipe dream of web application developers the world over, the next version of the Flash Player will allow you to read from and write to local files using a simple ActionScript interface.
This is [...]]]></description>
			<content:encoded><![CDATA[<p>One of the features that I&#8217;m most looking forward to in <a href="http://labs.adobe.com/technologies/flashplayer10/">Flash Player 10</a> (codenamed Astro) is local file access. Once the pipe dream of web application developers the world over, the next version of the Flash Player will allow you to read from and write to local files using a simple ActionScript interface.</p>
<p>This is all implemented with a few simple additions to the <code>FileReference</code> class. Reading the content of a file is accomplished with the <code>FileReference.open()</code> method, which can be called once the user has selected a file using the browse dialog. Like most things in the Flash world file loading happens asynchronously, so you&#8217;ll have to listen out for the <code>Event.OPEN</code> event. Once the file has loaded, the file content is available as a <code>ByteArray</code> object through the <code>FileReference.data</code> property to do with as you please.</p>
<pre lang="actionscript">
package com.dynamicflash.examples {

  public class LocalFileAccessExample {

    public function LocalFileAccessExample():void {
      var fileRef = new FileReference();
      fileRef.addEventListener( Event.SELECT, onFileSelect );
      fileRef.addEventListener( Event.OPEN, onFileOpen );
      fileRef.browse();
    }

    private function onFileSelect( event:Event ):void {
      var fileRef:FileReference = event.target as FileReference;
      fileRef.open();
    }

    private function onFileOpen( event:Event ):void {
      var fileRef:FileReference = event.target as FileReference;
      var data:ByteArray = fileRef.data as ByteArray;
    }
  }
}
</pre>
<p>Saving data to a local file is as simple as calling the new <code>FileReference.save()</code> method and passing the data you want written to the file and the filename as parameters. As data you can pass either a String or a ByteArray object.</p>
<pre lang="actionscript">
fileRef:FileReference = new FileReference();
fileRef.save( 'Here is some text', 'some.txt');
</pre>
<p>In order to make sure that nefarious Internet denizens can&#8217;t mess with a user&#8217;s files without a their knowledge, the Flash Player pops up a native operating system save dialog every time you try to write data to a file. </p>
<p><img src="http://dynamicflash.com/images/astro-file-save-dialog.png" alt="Astro's file save dialog" title="" /></p>
<p>Consequently the filename you pass to <code>FileReference.save()</code> is little more than a suggestion to the user, and the default directory for the saved file seems to be the last save directory, rather than the directory the file was loaded from. I think this is a decent trade-off between functionality and security, even if it means that saving data to local files requires a little more effort on the user&#8217;s part than with traditional desktop applications.</p>
<p><strong>Note</strong>: There is currently a bug in the latest beta of Flash Player 10 where any attempt to overwrite an existing file will result in that file being truncated to zero bytes, rather than being filled with the data you specified. This is a known issue, and you can <a href="https://bugs.adobe.com/jira/browse/FP-276">track the bug</a> over at Adobe&#8217;s issue tracker.</p>
<p>To illustrate this new feature, I&#8217;ve knocked up a simple application (including source code) that I&#8217;m somewhat unimaginatively calling <a href="http://dynamicflash.com/downloads/astro/flexpad">FlexPad</a> for you to play around with.</p>
<p>If you want to build your own projects that make use any of the new features in Flash Player 10, you&#8217;ll need to grab a recent stable copy of the Flex SDK. See <a href="http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Player+10+Beta+with+Flex+SDK+3.0.x">Targeting Flash Player 10 Beta with Flex SDK 3.0.x</a> for more information.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/336126418" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/07/flash-player-10-local-file-access/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/07/flash-player-10-local-file-access/</feedburner:origLink></item>
		<item>
		<title>The problem with SproutCore</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/334972857/</link>
		<comments>http://dynamicflash.com/2008/07/the-problem-with-sproutcore/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 09:56:03 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[Accessibility]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 2]]></category>

		<category><![CDATA[Flex 3]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[rant]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/?p=159</guid>
		<description><![CDATA[I&#8217;ve been meaning to sit down and this article on SproutCore ever since it shot to fame as the underlying client-side framework used to build Apple&#8217;s recently released MobileMe web application. You see, SproutCore seems to have had a falling out with web standards and web development best practices, something that wasn&#8217;t getting picked up [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to sit down and this article on <a href="http://sproutcore.com">SproutCore</a> ever since it <a href="http://www.techcrunch.com/2008/06/09/want-to-try-out-mobileme-check-out-sproutcore/">shot to fame</a> as the underlying client-side framework used to build Apple&#8217;s recently released <a href="http://me.com">MobileMe</a> web application. You see, SproutCore seems to have had a falling out with web standards and web development best practices, something that wasn&#8217;t getting picked up in all the mainstream coverage it was receiving.</p>
<p>For the uninitiated, SproutCore is a JavaScript framework developed by <a href="http://sproutit.com">SproutIt</a>. It was initially developed to enable them to build their <a href="http://www.sproutit.com/mailroom">Mailroom</a> application, which according to their website is <q>a hosted help desk service for consumer-oriented businesses </q>. So far, so good. The description given on the SproutCore website makes it sound like the framework is similar to other JavaScript libraries like <a href="http://developer.yahoo.com/yui/">YUI</a> and <a href="http://jquery.org">JQuery</a>, only a little more focussed on the application as a whole:</p>
<blockquote>
<p>SproutCore is a framework for building applications in JavaScript with remarkably little amounts of code. It can help you build full “thick” client applications in the web browser that can create and modify data, often completely independent of your web server, communicating with your server via Ajax only when they need to save or load data.</p>
</blockquote>
<p>What the above paragraph only hints at, though, is that SproutCore doesn&#8217;t just ignore progressive enhancement &#8212; it hacks it into tiny little pieces, urinates all over them and then mails them back to you one by one:</p>
<blockquote>
<p>After lots of testing, we have found that the most efficient way to server a SproutCore application is as a … static web page! Once a SproutCore application is loaded into your web browser, it communicates with your backend server using Ajax.</p>
</blockquote>
<p>Can you guess what an application looks like with JavaScript disabled? If you said &#8220;a blank page&#8221;, you can give yourself half a gold star. The unfortunate truth is that what you get is even worse than a blank page - you get a page devoid of any content but with UI controls that do absolutely bugger all. Don&#8217;t just take my word for it; check out the check out the <a href="http://www.sproutcore.com/static/photos">SproutCore Photos example</a> and then turn JavaScript off and hit refresh.</p>
<p>I thought we&#8217;d moved past this whole progressive enhancement issue back when Jeremy Keith was <a href="http://adactio.com/journal/959">banging on about it</a> to anyone who stood still for long enough. Alas, it seems there are still some poor unfortunately souls who have yet to benefit from Jeremy&#8217;s wisdom.</p>
<p>The total disregard for progressive enhancement is not the only thing wrong with SproutCore. Almost every UI widget and container in the framework is represented by nested &lt;div&gt; elements, differentiated only by their combination of class names. Where semantic elements are used they are used incorrectly (i.e. using &lt;label&gt; for headings). There is no sign of tab-enabling them or <a href="http://www.w3.org/WAI/intro/aria">WAI-ARIA</a> support, and all of this means that SproutCore applications are likely to be totally inaccessible out of the box.</p>
<p>OK, so SproutCore is bad, but what does all this have to do with Flash? That&#8217;s a fair question, given that the main focus of this blog has been Flash / Flex / AIR for the past 3 years. The answer is that the <a href="http://www.sproutcore.com/about/">About SproutCore</a> page takes a fundamentally misinformed swipe at Flash, and I&#8217;m calling them on it:</p>
<blockquote>
<p><strong>Why should I use SproutCore instead of a plugin like Flash or Silverlight?</strong></p>
<p>Nobody likes using software running in a sandbox and no one likes to download plugins before they can use your software. If you want to create an application on the web that is fast, fluid, and native, and usable by everyone, use the only technologies that come built right into every browser: HTML and JavaScript. SproutCore makes it easy to do just that.</p>
</blockquote>
<p>It seems that the SproutCore developers may have forgotten that JavaScript also runs in a sandbox, and it&#8217;s a great deal more restrictive than the Flash Player. Just try making a cross domain request using JavaScript, or setting up a permanent connection to a socket server, or (as is available in <a href="http://labs.adobe.com/technologies/flashplayer10">Flash Player 10</a>) <a href="http://labs.adobe.com/technologies/flashplayer10/releasenotes.html#features_ocre">run-time access to local files</a>.</p>
<p>They also seem to have missed the fact that the percentage of users unable to see Flash content is significantly lower than those fumbling around the Internet without JavaScript disabled. According to <a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html#ft2">Adobe&#8217;s statistics</a> content published for Flash Player 9 is viewable by an average of 97.4% of web users across all markets. That compares very favourably with the 95% of users who have JavaScript enabled <a href="http://www.w3schools.com/browsers/browsers_stats.asp">according to w3schools</a>.</p>
<p>Oh, and there&#8217;s nothing special about SproutCore&#8217;s <q>fast, fluid and native</q> controls - they are no more or less fast, fluid or native than Flash or Flex components. You can make either one <a href="http://dynamicflash.com/2005/12/native-looking-widgets-in-flash/">look like native operating system controls</a> but that doesn&#8217;t mean you should, and speed of execution and layout is down the to the implementation. On the speed front, it&#8217;s interesting to note that Mozilla are busy integrating <a href="http://www.mozilla.org/projects/tamarin/">Tamarin</a> (the ActionScript virtual machine built into the Flash Player) into Firefox in order to support ECMAScript Edition 4 and speed up JavaScript execution.</p>
<p>The worst thing about all this for me is that this is the framework that Apple have chosen as the foundation of their MobileMe web application. There are lots and lots of bad frameworks on the Internet, but to see one used in such a prominent application by a company normally very meticulous about application design and user experience is disappointing. </p>
<p>I hope that the SproutCore developers read this article and take on board at least some of the points above. There&#8217;s nothing in the framework that cannot be fixed, though fixing the whole progressive enhancement issue is going to require a shifting of the framework&#8217;s focus away from 100% client-side application logic.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/334972857" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/07/the-problem-with-sproutcore/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/07/the-problem-with-sproutcore/</feedburner:origLink></item>
		<item>
		<title>Yahoo! London seeks Junior Developers</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/264033876/</link>
		<comments>http://dynamicflash.com/2008/04/yahoo-london-seeks-junior-developers/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 15:10:47 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[Yahoo!]]></category>

		<category><![CDATA[internet]]></category>

		<category><![CDATA[jobs]]></category>

		<category><![CDATA[junior]]></category>

		<category><![CDATA[opportunities]]></category>

		<category><![CDATA[web developer]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/04/yahoo-london-seeks-junior-developers/</guid>
		<description><![CDATA[We're currently looking for two Junior Web Developers to join the infamous Yahoo! web development team in London. Email <a href="mailto:steve@dynamicflash.com?subject=Y!%20Junior%20Web%20Developer%20position">steve@dynamicflash.com</a> with a subject of <em>Y! Junior Web Developer position</em> attaching a recent CV if you're interested.

Job description follows after the break.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re currently looking for two Junior Web Developers to join the infamous Yahoo! web development team in London. Email <a href="mailto:steve@dynamicflash.com?subject=Y!%20Junior%20Web%20Developer%20position">steve@dynamicflash.com</a> with a subject of <em>Y! Junior Web Developer position</em> attaching a recent CV if you&#8217;re interested.</p>
<p>Job description follows after the break.</p>
<h3>Yahoo! Junior Web Developer — Job Description</h3>
<p>As the world&#8217;s number one Internet brand Yahoo! delivers news, entertainment, information and fun to over a half billion people every day. Our European web development team, based in London, is seeking standards-savvy front-end developers to work on Europe&#8217;s busiest sites.</p>
<p>You should be able to provide examples of your work showing use of progressive enhancement techniques (e.g. unobtrusive scripting), and clear separation of structure, presentation and behaviour layers.</p>
<h4>Required Skills</h4>
<ul>
<li>Hand-coded (X)HTML, CSS, and JavaScript</li>
<li>Solid knowledge of standards-based, accessible, cross-browser web development</li>
<li>PHP programming skills</li>
<li>User-level experience with BSD/Linux</li>
<li>Experience using version control systems such as CVS &#038; Subversion</li>
</ul>
<h4>Desirable Skills</h4>
<ul>
<li>Client– and server–side performance optimisation techniques</li>
<li>Search engine optimisation</li>
<li>Experience in developing web applications with rich client interfaces using AJAX, drag and drop, and other DOM Scripting techniques.</li>
<li>Experience with JavaScript libraries, especially the YUI</li>
<li>Experience of Web Services (eg REST, SOAP, XML-RPC)</li>
<li>Knowledge of web site internationalisation issues and experience developing web sites in multiple languages particularly in Europe.</li>
<li>Use of the following technologies: XML/XSLT, Perl, Microformats, JSON, Flash/Flex</li>
<li>Experience developing functionality/applications by assembling existing code modules</li>
</ul>
<h4>Responsibilities</h4>
<p>You will work closely with Information Architects, Visual Designers, User Researchers, Software Engineers, and Product Managers to ensure that our web based products in Europe provide the best possible experience for our users.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/264033876" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/04/yahoo-london-seeks-junior-developers/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/04/yahoo-london-seeks-junior-developers/</feedburner:origLink></item>
		<item>
		<title>I am Singularity</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/231631075/</link>
		<comments>http://dynamicflash.com/2008/02/i-am-singularity/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 14:23:36 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 2]]></category>

		<category><![CDATA[Flex 3]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[singularity08]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/02/i-am-singularity/</guid>
		<description><![CDATA[
Aral has finally taken the wraps off of his super-secret Singularity project:

Singularity is the first large-scale online web conference in the world.
Singularity is over 100 of the world’s top web visionaries, developers, designers, thought leaders, and celebrities.
Singularity is three days of talks over multiple tracks.
In 2008, Singularity will define Web ‘08.

I&#8217;m proud to say that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://singularity08.com"><img style="border: 0;" src="http://singularity08.com/images/buttons/button_468x60.gif" width="468" height="60" alt="Singularity?"/></a></p>
<p><a href="http://aralbalkan.com">Aral</a> has finally taken the wraps off of his super-secret <a href="http://singularity08.com">Singularity</a> project:</p>
<blockquote><p>
Singularity is the first large-scale online web conference in the world.</p>
<p>Singularity is over 100 of the world’s top web visionaries, developers, designers, thought leaders, and celebrities.</p>
<p>Singularity is three days of talks over multiple tracks.</p>
<p>In 2008, Singularity will define Web ‘08.
</p></blockquote>
<p>I&#8217;m proud to say that I&#8217;ve <a href="http://singularity08.com/speakers/steve-webster">signed up as a speaker</a> for the event. My session, however, is an absolute secret that I will not divulge to anyone before the time is right. Okay, okay&#8230; I&#8217;m not 100% sure what my session is going to be just yet, but I&#8217;ve got until mid-october to sort something out. My experience working at Yahoo! - trying to bring together the best from the Flash/Flex work with the best from the HTML/CSS/JS standards world - is sure to give me a unique view on <em>something</em>, right? </p>
<p>If there&#8217;s something specific <em>you</em> want to hear about, let me know via the comments.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/231631075" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/02/i-am-singularity/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/02/i-am-singularity/</feedburner:origLink></item>
		<item>
		<title>Yahoo! Astra component library 1.1 released</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/230483218/</link>
		<comments>http://dynamicflash.com/2008/02/yahoo-astra-component-library-11-released/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 19:42:25 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 2]]></category>

		<category><![CDATA[Flex 3]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/02/yahoo-astra-component-library-11-released/</guid>
		<description><![CDATA[ My colleagues in the Yahoo! Flash Platform team recently released version 1.1 of the Yahoo! Astra library. The library includes a whole bunch of brand-spanking new Flex and Flash components, as well as updates and bug fixes for the existing Flash components
All of this stuff is available now under a BSD-style license. Check out [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.yahoo.com/flash/astra-flash/"><img style="border:0; float: left; margin: 0 10px 10px 0;" src='http://dynamicflash.com/wp-content/uploads/2008/02/astra.jpg' alt='Yahoo! Astra library' /></a> My colleagues in the <a href="http://yswfblog.com">Yahoo! Flash Platform team</a> recently released version 1.1 of the <a href="http://developer.yahoo.com/flash/astra-flash/">Yahoo! Astra library</a>. The library includes a whole bunch of brand-spanking new Flex and Flash components, as well as updates and bug fixes for the existing Flash components</p>
<p>All of this stuff is available now under a <a href="http://developer.yahoo.com/flash/license.html">BSD-style license</a>. Check out the <a href="http://www.yswfblog.com/blog/2008/01/30/astra-galore-new-flash-and-flex-components/">official announcement</a> or get straight to the goodies at the <a href="http://developer.yahoo.com/flash/astra-flash/">Astra Component Library section</a> of the Yahoo! Developer Network.</p>
<p>PS. Yes I know I&#8217;m a little (okay, almost 2 weeks) behind the times with this information. However, since I know that a number of people come here to get their fix of Flash/Yahoo! news I thought I ought to mention <em>something</em> about the release, however belated.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/230483218" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/02/yahoo-astra-component-library-11-released/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/02/yahoo-astra-component-library-11-released/</feedburner:origLink></item>
		<item>
		<title>On X-UA-Compatible</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/221267428/</link>
		<comments>http://dynamicflash.com/2008/01/on-x-ua-compatible/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 23:20:41 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Web Standards]]></category>

		<category><![CDATA[rant]]></category>

		<category><![CDATA[internet explorer]]></category>

		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/01/on-x-ua-compatible/</guid>
		<description><![CDATA[I started to write a long post about why Microsoft&#8217;s proposal to fix web standards with a proprietary meta tag / header is both utterly futile and offensive to developers that care about web standards. Mike Davies, a fellow Yahoo! and one of the best guys you could hope to meet, has said everything I [...]]]></description>
			<content:encoded><![CDATA[<p>I started to write a long post about why <a href="http://blogs.msdn.com/ie/archive/2008/01/21/compatibility-and-ie8.aspx">Microsoft&#8217;s proposal to fix web standards with a proprietary meta tag / header</a> is both utterly futile and offensive to developers that care about web standards. <a href="">Mike Davies</a>, a fellow Yahoo! and one of the best guys you could hope to meet, has said everything I wanted to say - much more eloquently than I tend to be when ranting, I might add - in his <a href="http://www.isolani.co.uk/blog/standards/EndOfLineInternetExplorer">End of line Internet Explorer</a> article.</p>
<blockquote><p>
The biggest barrier to Microsoft adopting web standards is Microsoft&#8217;s own clients, or rather Microsoft&#8217;s promise to them of backwards compatibility. They have a plan to solve this, but it demands that web developers sacrifice the future compatibility of their sites.
</p></blockquote>
<p>Having spent most of the evening reading various blog posts on this debacle, it&#8217;s interesting to see how Microsoft have managed to divide the opinions of leading members the web standards community so fiercely. I wonder who might benefit from such a situation?</p>
<p><a href="http://www.isolani.co.uk/blog/standards/EndOfLineInternetExplorer">Read Mike&#8217;s article in full</a></p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/221267428" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/01/on-x-ua-compatible/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/01/on-x-ua-compatible/</feedburner:origLink></item>
		<item>
		<title>foundationas3.com has launched</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/217113433/</link>
		<comments>http://dynamicflash.com/2008/01/foundationas3com-has-launched/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 16:41:46 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Books]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 2]]></category>

		<category><![CDATA[Flex 3]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/01/foundationas3com-has-launched/</guid>
		<description><![CDATA[Just a little note to say that I&#8217;ve just launched the Foundation ActionScript 3.0 book companion site at foundationas3.com.
There&#8217;s precious little there at the moment except some illustration errata for Chapter 14: Flex by Example, but I hope to build this into a site full of great resources for readers and prospective readers of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://foundationas3.com'><img class="alignleft" src='http://dynamicflash.com/wp-content/uploads/2008/01/foundationas3-com.jpg' alt='foundationas3.com' border="0" style="margin: 0 10px 10px 0; float: left" /></a>Just a little note to say that I&#8217;ve just launched the <a href="http://www.amazon.com/Foundation-Actionscript-3-0-Flash-Flex/dp/1590598156/?tag=dynaflas-20">Foundation ActionScript 3.0</a> book companion site at <a href="http://foundationas3.com">foundationas3.com</a>.</p>
<p>There&#8217;s precious little there at the moment except some <a href="http://foundationas3.com/2008/01/illustrations-for-chapter-14-flex-by-example/">illustration errata for Chapter 14: Flex by Example</a>, but I hope to build this into a site full of great resources for readers and prospective readers of the book.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/217113433" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/01/foundationas3com-has-launched/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/01/foundationas3com-has-launched/</feedburner:origLink></item>
		<item>
		<title>FileReference.upload doesn’t support custom headers</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/216419457/</link>
		<comments>http://dynamicflash.com/2008/01/filereferenceupload-doesnt-support-custom-headers/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 13:11:46 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 2]]></category>

		<category><![CDATA[Flex 3]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[file upload]]></category>

		<category><![CDATA[filereference]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[urlrequest]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/01/filereferenceupload-doesnt-support-custom-headers/</guid>
		<description><![CDATA[At work we're working on an application that makes heavy use of the FileReference.upload() method to upload files to the server. We recently had a change request to add some custom HTTP headers to the upload request, which I didn't think would be a problem. I was wrong.
When using the FileReference.upload() method to upload a [...]]]></description>
			<content:encoded><![CDATA[<p>At work we're working on an application that makes heavy use of the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/FileReference.html#upload()">FileReference.upload()</a> method to upload files to the server. We recently had a change request to add some custom HTTP headers to the upload request, which I didn't think would be a problem. I was wrong.</p>
<p>When using the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/FileReference.html#upload()">FileReference.upload()</a> method to upload a file to a server, you can specify additional variables to be sent along with that upload request by means of a <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html">URLRequest</a> object like so:</p>
<div class="igBar"><span id="lactionscript-3"><a href="#" onclick="javascript:showCodeTxt('actionscript-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-3">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Create new request object and point it at the right URL</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">var</span> request:URLRequest = <span style="color: #000066;">new</span> URLRequest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000066;">url</span> = <span style="color: #ff0000;">"/upload.php"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Specify additional variables to be sent with request as POST data</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000000;">method</span> = URLRequestMethod.<span style="color: #000000;">POST</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000066;">data</span> = <span style="color: #000066;">new</span> URLVariables<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000066;">data</span>.<span style="color: #000000;">foo</span> = <span style="color: #ff0000;">"bar"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Upload file using data from request object</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">fileRef.<span style="color: #000000;">upload</span><span style="color: #000000;">&#40;</span>request<span style="color: #000000;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Since you can send custom headers using the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html">URLRequest</a> object's <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html#requestHeaders">requestHeaders</a> property, I should have been able to specify custom headers for my file upload request fairly easily:</p>
<div class="igBar"><span id="lactionscript-4"><a href="#" onclick="javascript:showCodeTxt('actionscript-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-4">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Create new request object and point it at the right URL</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">var</span> request:URLRequest = <span style="color: #000066;">new</span> URLRequest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000066;">url</span> = <span style="color: #ff0000;">"/upload.php"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Specify additional variables to be sent with request as POST data</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000000;">method</span> = URLRequestMethod.<span style="color: #000000;">POST</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000066;">data</span> = <span style="color: #000066;">new</span> URLVariables<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000066;">data</span>.<span style="color: #000000;">foo</span> = <span style="color: #ff0000;">"bar"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Specify additional headers to be sent with request</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">var</span> header:URLRequestHeader = <span style="color: #000066;">new</span> URLRequestHeader<span style="color: #000000;">&#40;</span><span style="color: #ff0000;">'X-Test-Header'</span>, <span style="color: #ff0000;">'Hello'</span><span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">request.<span style="color: #000000;">requestHeaders</span>.<span style="color: #000066;">push</span><span style="color: #000000;">&#40;</span>header<span style="color: #000000;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Upload file using data from request object</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">fileRef.<span style="color: #000000;">upload</span><span style="color: #000000;">&#40;</span>request<span style="color: #000000;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Sadly, the above code doesn't work. I checked the raw request and response using Charles and the custom X-Test-Header I was trying to send just wasn't coming through. I tried a number of different variations of the same code, all with the same result. </p>
<p>The problem, I have just discovered, is that there are a number of restrictions placed on the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html">URLRequest</a> object when used in conjunction with the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/FileReference.html">FileReference</a> methods. One of these restrictions is that the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html#requestHeaders">requestHeaders</a> property is completely ignored when using the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/FileReference.html#upload()">FileReference.upload()</a> method, so it's impossible to send custom HTTP headers along with a file upload.</p>
<p>To be completely fair to Adobe, this and the other restrictions are stated quite clearly in the documentation for the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html">URLRequest</a> object: </p>
<blockquote><p>
The FileReference.upload() and FileReference.download() methods do not support the URLRequest.requestHeaders parameter.
</p></blockquote>
<p>Since I can't see any security or technical reason why the <a href="http://livedocs.adobe.com/flex/201/langref/flash/net/URLRequest.html">URLRequest</a> object should be restricted in this way, I'm off to file a bug with Adobe to see if we can get this addressed in a future version of the Flash Player. </p>
<p>Lesson learned: RTFM.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/216419457" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/01/filereferenceupload-doesnt-support-custom-headers/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/01/filereferenceupload-doesnt-support-custom-headers/</feedburner:origLink></item>
		<item>
		<title>Foundation ActionScript 3.0 now available</title>
		<link>http://feeds.feedburner.com/~r/DynamicFlash/~3/216059581/</link>
		<comments>http://dynamicflash.com/2008/01/foundation-as3/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 19:39:55 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Books]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex 2]]></category>

		<category><![CDATA[actionscript 3.0]]></category>

		<category><![CDATA[book]]></category>

		<category><![CDATA[designer]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://dynamicflash.com/2008/01/foundation-as3/</guid>
		<description><![CDATA[ 
Somehow this slipped under my radar, but better late than never. Foundation ActionScript 3.0 for Flash CS3 and Flex, my big book-writing project from last year, is now available in all good bookshops. 
Here's some of the blurb from Amazon.com:

Whether you are an aspiring ActionScript developer, or an experienced ActionScript developer who wants to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/Foundation-Actionscript-3-0-Flash-Flex/dp/1590598156/?tag=dynaflas-20" title="Buy Foundation ActionScript 3.0 at Amazon.com"><img style="margin: 0 15px 15px 0; border: 1px solid #333" src="http://www.dynamicflash.com/images/foundation-as3.jpg" width="132" height="158" align="left" alt="Foundation ActionScript 3.0 with Flash CS3 and Flex" /></a> </p>
<p>Somehow this slipped under my radar, but better late than never. <a href="http://www.amazon.com/Foundation-Actionscript-3-0-Flash-Flex/dp/1590598156/?tag=dynaflas-20">Foundation ActionScript 3.0 for Flash CS3 and Flex</a>, my big book-writing project from last year, is now available in all good bookshops. </p>
<p>Here's some of the blurb from Amazon.com:</p>
<blockquote><p>
Whether you are an aspiring ActionScript developer, or an experienced ActionScript developer who wants to upgrade your knowledge to version 3.0, this book teaches all you need to know to start to harness the power of ActionScript 3.0 using Flash CS3, Flex 2 or Flex 3. It covers all the essential techniques from the ground up, allowing you to get up and running quickly and easily.
</p></blockquote>
<p>The book is available to purchase right now at <a href="http://www.amazon.com/Foundation-Actionscript-3-0-Flash-Flex/dp/1590598156/?tag=dynaflas-20">Amazon.com</a> and <a href="http://www.amazon.co.uk/Foundation-Actionscript-3-0-Flash-Flex/dp/1590598156/?tag=dynamicflash-21">Amazon.co.uk</a> and all good bookshops.</p>
<img src="http://feeds.feedburner.com/~r/DynamicFlash/~4/216059581" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dynamicflash.com/2008/01/foundation-as3/feed/</wfw:commentRss>
		<feedburner:origLink>http://dynamicflash.com/2008/01/foundation-as3/</feedburner:origLink></item>
	</channel>
</rss>
