<?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>Ethan Malasky</title>
	<atom:link href="http://blogs.adobe.com/emalasky/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.adobe.com/emalasky</link>
	<description>Musings on Adobe AIR and Platform Stuff</description>
	<lastBuildDate>Fri, 02 Jul 2010 16:47:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>New TabSample App</title>
		<link>http://blogs.adobe.com/emalasky/2010/06/new_tabsample_a.html</link>
		<comments>http://blogs.adobe.com/emalasky/2010/06/new_tabsample_a.html#comments</comments>
		<pubDate>Tue, 22 Jun 2010 16:09:05 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2010/06/new_tabsample_a.html</guid>
		<description><![CDATA[The TabSample app I posted three years ago has gone horribly stale. Here&#8217;s a new version, with no additional features other than compiling nicely with the Flex 4 SDK. TabSample.fxp Thanks to xbrotherx on the AIR Forum for caring enough to post about it!]]></description>
			<content:encoded><![CDATA[<p>The TabSample app I <a href="http://blogs.adobe.com/emalasky/archives/2007/07/tear-off_tabs_i.html">posted</a> three years ago has gone horribly stale.<br />
Here&#8217;s a new version, with no additional features other than compiling nicely with the Flex 4 SDK.<br />
<a href="http://blogs.adobe.com/emalasky/TabSample.fxp">TabSample.fxp</a><br />
Thanks to xbrotherx on the <a href="http://forums.adobe.com/message/2916236#2916236">AIR Forum</a> for caring enough to post about it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2010/06/new_tabsample_a.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Privileged Modules:  HOWTO validate signatures</title>
		<link>http://blogs.adobe.com/emalasky/2008/12/privileged_modu.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/12/privileged_modu.html#comments</comments>
		<pubDate>Mon, 15 Dec 2008 09:21:49 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/12/privileged_modu.html</guid>
		<description><![CDATA[In previous blog posts and presentations, I&#8217;ve talked about the need to do signature validation before importing a module into an AIR application. People asked for specifics, but I haven&#8217;t managed to figure out all the details and document them well enough for common use. Luckily, Charles &#8220;Joe&#8221; Ward has figured it out. Joe&#8217;s article [...]]]></description>
			<content:encoded><![CDATA[<p>In previous <a href="http://weblogs.macromedia.com/emalasky/archives/2008/04/remote_plugins.html">blog posts</a> and <a href="http://blogs.adobe.com/air/2008/11/max_session_maintain_security.html">presentations</a>, I&#8217;ve talked about the need to do signature validation before importing a module into an AIR application.  People asked for specifics, but I haven&#8217;t managed to figure out all the details and document them well enough for common use.<br />
Luckily, Charles &#8220;Joe&#8221; Ward has figured it out.  Joe&#8217;s <a href="http://www.adobe.com/devnet/air/flex/quickstart/xml_signatures.html">article on the Developer Center</a> walks us through the steps needed to validate the signature of a resource, and how to sign the resource in the first place using ADT or our own Java code.<br />
Using these techniques, it&#8217;s possible to load privileged modules into your AIR app.  Download the module files (SWFs, say) along with their signature files.  Store them somewhere local (<code>app-storage:</code> is good, <code>app:</code> is bad).  Validate that they&#8217;re really the modules you developed and signed, then import them (using <code>loadBytes()</code> with <code>allowLoadBytesCodeExecution</code> enabled).<br />
<a href="http://www.adobe.com/devnet/air/flex/quickstart/xml_signatures.html">Read &#8220;Creating and validating XML signatures&#8221;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/12/privileged_modu.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MAX2008: Maintain Security With Adobe AIR</title>
		<link>http://blogs.adobe.com/emalasky/2008/11/max2008_maintai.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/11/max2008_maintai.html#comments</comments>
		<pubDate>Fri, 21 Nov 2008 18:43:19 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/11/max2008_maintai.html</guid>
		<description><![CDATA[That was the title of the session I did with Peleus Uhley on Wednesday. It&#8217;s always fun to talk about security, especially with such an informed audience. Hopefully it was fun for them, too. It&#8217;s taken longer than I&#8217;d hoped but the slides are available here as PDF. Or, just check them out below!]]></description>
			<content:encoded><![CDATA[<p>That was the title of the session I did with Peleus Uhley on Wednesday.  It&#8217;s always fun to talk about security, especially with such an informed audience.  Hopefully it was fun for them, too.<br />
It&#8217;s taken longer than I&#8217;d hoped but the slides are available <a href="http://weblogs.macromedia.com/emalasky/archives/MAX2008_MaintainSecurityWithAdobeAIR.pdf">here</a> as PDF.<br />
Or, just check them out below!<br />
<object width="500" height="430">      <embed src="https://share.acrobat.com/adc/flex/mpt.swf" type="application/x-shockwave-flash" width="500" height="430"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/11/max2008_maintai.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe AIR Supports XSLT</title>
		<link>http://blogs.adobe.com/emalasky/2008/10/adobe_air_suppo.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/10/adobe_air_suppo.html#comments</comments>
		<pubDate>Sat, 11 Oct 2008 13:08:18 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/10/adobe_air_suppo.html</guid>
		<description><![CDATA[The internet is funny. Things get written, then cross-referenced, then indexed by mammoth search engines. Later, when the truth changes, the old postings stay around in various indexes. So, if you did a search for &#8220;Adobe AIR XSLT&#8221; via your favorite search engine, you&#8217;d be forgiven for thinking that AIR doesn&#8217;t yet support client-side XSLT. [...]]]></description>
			<content:encoded><![CDATA[<p>The internet is funny.  Things get written, then cross-referenced, then indexed by mammoth search engines.   Later, when the truth changes, the old postings stay around in various indexes.<br />
So, if you did a search for &#8220;Adobe AIR XSLT&#8221; via your <a href="http://www.google.com/search?q=adobe+air+xslt">favorite</a> <a href="http://search.yahoo.com/search?p=adobe+air+xslt">search</a> <a href="http://www.ask.com/web?q=Does+Adobe+AIR+Support+XSLT%3F&amp;search=search&amp;qsrc=0&amp;o=0&amp;l=dir">engine</a>, you&#8217;d be forgiven for thinking that AIR doesn&#8217;t yet support client-side XSLT.<br />
But the vast majority of those pages were from August 2007, when AIR was still in Beta.  By the time AIR 1.0 launched in 2008, XSLT support was enabled.<br />
So yes:  Adobe AIR Supports XSLT!<br />
I&#8217;ve only seen <strong>one</strong> blog post about this truth, by my co-worker <a href="http://blogs.adobe.com/briggs/2008/05/using_air_for_xslt_processing.html">Brian Riggs</a>, who works on <a href="http://www.adobe.com/products/mediaplayer/">Adobe Media Player</a>.<br />
Please, <a href="http://blogs.adobe.com/briggs/2008/05/using_air_for_xslt_processing.html">read his post</a>, link to it, and link to this one.  Together, we can change the search engines!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/10/adobe_air_suppo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides from my onAIR talk</title>
		<link>http://blogs.adobe.com/emalasky/2008/06/slides_from_my.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/06/slides_from_my.html#comments</comments>
		<pubDate>Mon, 23 Jun 2008 22:50:01 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/06/slides_from_my.html</guid>
		<description><![CDATA[I&#8217;ve gone more in depth into security and injection attacks before. But sometimes, it&#8217;s nicer to see everything boiled down into a few slides. Here, then, are the security slides from my onAIR presentation (PDF). You may see some familiar diagrams&#8230; For more detailed information on how application upgrade really works, check out this trio [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve gone more <a href="http://weblogs.macromedia.com/emalasky/archives/2008/04/remote_plugins.html">in depth</a> into security and injection attacks before.  But sometimes, it&#8217;s nicer to see everything boiled down into a few slides.<br />
Here, then, are the <a href="http://weblogs.macromedia.com/emalasky/archives/onAIR_Security_Slides.pdf"> security slides from my onAIR presentation (PDF)</a>.  You may see some familiar diagrams&#8230;<br />
For more detailed information on how application upgrade really works, check out this <a href="http://onair.adobe.com/blogs/tour/2008/06/23/signing-deploying-and-updating-air-applications/">trio of posts</a> that Serge Jespers did.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/06/slides_from_my.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quick, Cool Links</title>
		<link>http://blogs.adobe.com/emalasky/2008/06/quick_cool_link.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/06/quick_cool_link.html#comments</comments>
		<pubDate>Tue, 17 Jun 2008 23:18:49 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/06/quick_cool_link.html</guid>
		<description><![CDATA[There&#8217;s been a lot going on lately, even without counting a great week with the onAIR tour in Europe. Each of these deserve a full post with captivating details and insider insight. But instead I&#8217;m going for partial credit, just getting everything out there. AIR 1.1 AIR 1.1 went live last night, bringing international and [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot going on lately, even without counting a great week with the onAIR tour in Europe.  Each of these deserve a full post with captivating details and insider insight.  But instead I&#8217;m going for partial credit, just getting everything out there.</p>
<h2>AIR 1.1</h2>
<p><a href="http://www.adobe.com/go/air">AIR 1.1</a> went live last night, bringing international and localization support to AIR.  This means that users get an application install experience best suited to their language, and developers can craft apps that are similarly localized.  Christian and Jeff wrote articles showing how to do just that; check out the <a href="http://www.adobe.com/devnet/air/">AIR Developer Center</a>.</p>
<h2>Update Framework</h2>
<p>It&#8217;s crucial for applications to be able to update themselves.  Users expect seamless growth as new functionality is added.  Update is also a security safety valve.  If an application has a vulnerability, it can update itself to a safe, patched version.  <a href="http://www.webkitchen.be/">Serge Jespers</a> gave a great presentation about update for the onAIR tour.<br />
Now there&#8217;s a new <a href="http://labs.adobe.com/wiki/index.php/Adobe_AIR_Update_Framework">Update Framework</a> available on <a href="http://labs.adobe.com/">Adobe Labs</a>, making it even easier to do the right thing.</p>
<h2>Security Talk</h2>
<p>In Warsaw last week, <a href="http://blog.kevinhoyt.org/">Kevin Hoyt</a> was nice enough to tape my talk on security.  Yesterday, he <a href="http://blog.kevinhoyt.org/2008/06/17/ethan-malasky-on-security-in-adobe-air/">made the audio available</a> on his blog.<br />
I can&#8217;t say enough about how educational and fun the onAIR tour was.  The attendees&#8217; engagement and expertise was really humbling.  Developers are digging deep into AIR and pushing it to the limit, while suggesting great improvements to make development more and more elegant.  The evangelists are always great to talk to, and are even greater to travel with.</p>
<h2>AIR Cookbook</h2>
<p>I just learned about the <a href="http://www.adobe.com/devnet/air/?navID=cookbook">AIR Cookbook</a> on the developer center.  This is a great place for people to share the &#8220;recipes&#8221; they&#8217;ve created for working with AIR.  After seeing some excellent techniques in action the other week, I&#8217;m sure the cookbook will become a valuable tool for developers of all levels.  Delicious!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/06/quick_cool_link.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One week with the onAIR Tour in Europe</title>
		<link>http://blogs.adobe.com/emalasky/2008/05/one_week_with_t.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/05/one_week_with_t.html#comments</comments>
		<pubDate>Thu, 29 May 2008 00:10:07 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/05/one_week_with_t.html</guid>
		<description><![CDATA[I&#8217;m posting this from the beautiful city of Stockholm, Sweden. This week I&#8217;ll be traveling with Mike Chambers, Ryan Stewart and the rest of the onAIR crew. My presentation is an introduction to building security applications in AIR. The first leg of the tour is sold out, and I&#8217;m totally excited to be presenting to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m posting this from the beautiful city of Stockholm, Sweden.  This week I&#8217;ll be traveling with <a href="http://www.mikechambers.com/blog/2008/05/06/heading-to-europe-to-speak-on-air-and-flex/">Mike Chambers</a>, <a href='http://blog.digitalbackcountry.com/'>Ryan Stewart</a> and the rest of the <a href="http://onair.adobe.com/">onAIR</a> crew.<br />
My presentation is an introduction to building security applications in AIR.  The first leg of the tour is sold out, and I&#8217;m totally excited to be presenting to a full house.  If you&#8217;re coming to the events in Stockholm, Berlin, or Warsaw, say hi.  I want to use this opportunity outside my cube to meet the developers who give meaning to the platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/05/one_week_with_t.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Remote Plugins and Modules in AIR</title>
		<link>http://blogs.adobe.com/emalasky/2008/04/remote_plugins.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/04/remote_plugins.html#comments</comments>
		<pubDate>Mon, 14 Apr 2008 00:53:37 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/04/remote_plugins.html</guid>
		<description><![CDATA[I&#8217;ve been getting a lot of questions about how to use remote &#8220;modules&#8221; in AIR. &#8220;Modules&#8221; is in quotes because it can mean different things. In every case, it refers to running some SWF or HTML/JS content that is loaded at runtime from the network. The difference are in how the content is loaded and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting a lot of questions about how to use remote &#8220;modules&#8221; in AIR.  &#8220;Modules&#8221; is in quotes because it can mean different things.  In every case, it refers to running some SWF or HTML/JS content that is loaded at runtime from the network.  The difference are in how the content is loaded and how an application can communicate with it.<br />
Depending on the specifics of the modules you want to load there are different options about how to load and communicate with the content.  Let&#8217;s explore the options!!</p>
<p><span id="more-11"></span><br />
In web browsers, we run remote content all the time, and don&#8217;t have to worry about security. Images and pages from other domains can execute their own code, but can&#8217;t reach into ours.  We can also choose to pull someone else&#8217;s code into our own and run it.  Dynamic evaluation of Javascript is a powerful tool, and it can be elegantly used.  SWF has the same security model: remote content (images, audio, video, SWF) can run without accessing our code, and we can choose to import remote code and content (loadBytes()).<br />
Privileged local applications have a responsibility to protect their users.  No one wants their app to have flaws that expose their users&#8217; data or computers to attackers.  AIR has strict but simple standards about which content (SWF, JS) can get application privileges.  Only the files in the application&#8217;s security sandbox may use the local File APIs, Windowing APIs, etc.  Files will be in this sandbox only if they are loaded from the application&#8217;s local directory via an app: URI, or are imported into that sandbox using explicit APIs.</p>
<h2>Separate Sandboxes</h2>
<p><img alt="SandboxedLoading.png" src="http://weblogs.macromedia.com/emalasky/archives/SandboxedLoading.png" width="546" height="356" /><br />
If you don&#8217;t trust the content, or don&#8217;t want to verify that it really is trusted, you can keep it at arm&#8217;s length.  This is the default; remote content is loaded in a remote sandbox according to its domain.  One difference in AIR is key: <strong>Communication is possible across sandboxes at runtime</strong>.  Using the SandboxBridge API in AIR, content can expose a discoverable API to content across the border.  Any data passed is copied to its destination.  Complex data structures can be passed across the  (deep-copy, without functions and custom class information).<br />
This feels more like service-style communication. Loading a file is like getting a service endpoint. Your code&#8217;s integrity is protected by the loose coupling, but the service also has a bit of code that it gets to run in your client.  Google Gears&#8217;s  <a href="http://code.google.com/apis/gears/api_workerpool.html">WorkerPool</a> has a similar style, with message passing between threads that run in their own sandboxes.  The big difference is that SandboxBridge messages are synchronous, and look like function calls and property gets.<br />
SandboxBridges can be used at frame/iframe borders and at the LoaderInfo that is shared by parent and child when using Loader.  Each side can expose APIs to the other.  But it&#8217;s essential to resist the urge to bust the whole thing wide open.  Don&#8217;t think it&#8217;s cute to just expose <em>every</em> AIR API to unprivileged content.  Instead, expose high-level APIs that, when abused, will damage only your application, not the user&#8217;s whole system. A writeFile(file, data) API is just an invitation for attack.  By contrast,  savePreferences(data) will make your app less vulnerable to malicious content.</p>
<h2>Importing</h2>
<p><img alt="Importing.png" src="http://weblogs.macromedia.com/emalasky/archives/Importing.png" width="556" height="356" /><br />
If you do trust the content, and want it to be able to share your runtime data, share your type definitions and execute in your space, you can import it into the application&#8217;s sandbox.  This content will have full privilege.  I can&#8217;t overstate this enough: content you import this way can completely take control of your application.  And once it has control of your application, it can start doing evil things to the local machine.  It can do anything your app can do.<br />
So, why even bother with such a dangerous technique?  Well, in some cases it really is what you want.  If you&#8217;re trying to reduce the download size of your app, you can wait until you need some functionality before downloading it.  Flex Modules, for instance, require that they be imported into the loader&#8217;s sandbox.  The same technique works for localization data.<br />
So to pull this content in safely, you need to prove that you can trust it.  Given the ease of remote attacks (DNS hacks; man-in-the-middle attacks; owning up the &#8220;trusted&#8221; server; etc), imported modules must be signed, and the signature must be verified before loading the content.</p>
<ol>
<li>
<p>
First, sign your modules.  I&#8217;m pretty sure you can just use adt for this, then rip the signatures.xml out of META-INF.  Then post the modules and signatures.xml
</p>
</li>
<li>
<p>
When you download the modules, save them and signatures.xml somewhere in app-storage:/
</p>
</li>
<li>
<p>
Use the XMLSignatureValidator class to validate that you downloaded modules that really were signed by you (or some known entity).
</p>
</li>
<li>
<p>
Import the modules into your application sandbox.  For SWF, use Loader.loadBytes(), pass a LoaderContext with allowLoadBytesCodeExecution=true.  I doubt anyone will do *that* by accident.
</p>
</li>
</ol>
<p>In AIR 1.0, this is the best way to use Flex modules without taking dangerous risks.  I expect there will be other techniques in future versions.<br />
Import this way is not going to work for arbitrary third-party content.  If you don&#8217;t know ahead of time who you trust to have signed it, you must not import it.  Once again, we come back to The Spiderman Axiom: with great power comes great responsibility.<br />
Blah.  That&#8217;s way too long.  But at least I have someplace to point people to when they ask!<br />
Comments?  Concise summaries?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/04/remote_plugins.html/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>AIR for Linux &#8212; users and developers</title>
		<link>http://blogs.adobe.com/emalasky/2008/03/air_for_linux_.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/03/air_for_linux_.html#comments</comments>
		<pubDate>Sun, 30 Mar 2008 21:30:57 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/03/air_for_linux_.html</guid>
		<description><![CDATA[Two big announcements on the Adobe + Linux front today. A public alpha of AIR and a new rev of Flex Builder. For years I&#8217;ve been toying with the theory that Linux hasn&#8217;t caught on in the consumer desktop space because the apps users expect to run don&#8217;t run there. And the apps don&#8217;t run [...]]]></description>
			<content:encoded><![CDATA[<p>Two big announcements on the Adobe + Linux front today.  A <a href="http://www.adobe.com/go/airlinux">public alpha of AIR</a> and a new rev of <a href="http://www.adobe.com/go/flexbuilder_linux">Flex Builder</a>.<br />
For years I&#8217;ve been toying with the theory that Linux hasn&#8217;t caught on in the consumer desktop space because the apps users expect to run don&#8217;t run there.  And the apps don&#8217;t run there because developers need to learn different styles to develop Linux apps.  There&#8217;s different distros and packaging requirements, wide variance in window managers, etc, etc.<br />
Sure, the rise of Wine kind of undermines the whole theory.  But it adds an extra wrinkle: virtualized apps are cool, but a little bit weird.  I&#8217;m hooked on virtualized OSes for daily life, but I still feel like they&#8217;re not really playing well with others.<br />
Anyway, the ability to develop Linux apps using AIR is a big step.  Developers can write these apps on any OS.  And just as cool, developers who love what Linux offers for their own work productivity can create AIR apps that run on Mac and Win as well.  Same .air file, any OS.<br />
So try out the Linux tools and file some bugs!!  It&#8217;s the best way to get quality where we all want it to be.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/03/air_for_linux_.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>European Vacation</title>
		<link>http://blogs.adobe.com/emalasky/2008/03/european_vacati.html</link>
		<comments>http://blogs.adobe.com/emalasky/2008/03/european_vacati.html#comments</comments>
		<pubDate>Tue, 11 Mar 2008 19:30:52 +0000</pubDate>
		<dc:creator>Ethan Malasky</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/emalasky/2008/03/european_vacati.html</guid>
		<description><![CDATA[This is going to be fun. Hot on the heels of shipping AIR 1.0, I&#8217;ve been given approval to join some excitable evangelists and other eloquent luminaries on the AIR Tour in Europe. For one week in June, I&#8217;ll join the tour, presenting in Stockholm, Berlin and Warsaw. It&#8217;s always a blast to meet the [...]]]></description>
			<content:encoded><![CDATA[<p>This is going to be fun.  Hot on the heels of shipping <a href="http://www.adobe.com/go/air">AIR 1.0</a>, I&#8217;ve been given approval to join some excitable evangelists and other eloquent luminaries on the <a href="http://onair.adobe.com/tour/">AIR Tour in Europe.</a><br />
For one week in June, I&#8217;ll join the tour, presenting in Stockholm, Berlin and Warsaw.  It&#8217;s always a blast to meet the developers who are pushing the envelope of rich apps.  And it&#8217;ll be especially fun meeting them in parts of the world that are entirely new to me.  From this desk, it&#8217;s sometime hard to feel the true scale of a global community.<br />
I just need to find someone to keep an eye on my cube&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/emalasky/2008/03/european_vacati.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

