<?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>Mihai Corlan &#187; Video</title>
	<atom:link href="http://corlan.org/category/video/feed/" rel="self" type="application/rss+xml" />
	<link>http://corlan.org</link>
	<description>Web, Mobile, and Rock&#38;Roll</description>
	<lastBuildDate>Mon, 30 Jan 2012 11:01:17 +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>Getting Started with PhoneGap resources</title>
		<link>http://corlan.org/2012/01/13/getting-started-with-phonegap-resources/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-started-with-phonegap-resources</link>
		<comments>http://corlan.org/2012/01/13/getting-started-with-phonegap-resources/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 11:29:43 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=3375</guid>
		<description><![CDATA[
			
				
			
		
If you want to learn how to use PhoneGap to build mobile applications with JavaScript and HTML, one good way is to watch this great series of nine videos. My fellow evangelist Kevin Hoyt spent some time in the studio for shooting and the result is great. It will take you less than a hour [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2012/01/13/getting-started-with-phonegap-resources/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2012%2F01%2F13%2Fgetting-started-with-phonegap-resources%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2012%2F01%2F13%2Fgetting-started-with-phonegap-resources%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>If you want to learn how to use PhoneGap to build mobile applications with JavaScript and HTML, one good way is to watch this great series of nine videos. My fellow evangelist <a href="http://blog.kevinhoyt.com/">Kevin Hoyt</a> spent some time in the studio for shooting and the result is great. It will take you less than a hour and a half to watch all the videos.</p>
<p>Here is the list:</p>
<p><span id="more-3375"></span></p>
<h3>1. Getting Started with PhoneGap</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11728/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>2. Developing for iOS</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11729/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>3. Developing for Android</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11730/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>4. Device API</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11750/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>5. Accelerometer API</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11745/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>6. Camera API</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11746/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>7. Compass API</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11747/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>8. Connection API</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11748/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
<h3>9. Contacts API</h3>
<p><iframe width="480" height="296" title="AdobeTV Video Player" src="http://tv.adobe.com/embed/827/11749/" frameborder="0" allowfullscreen="" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2012/01/13/getting-started-with-phonegap-resources/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flash Builder&#8217;s Lost Features: Profiler</title>
		<link>http://corlan.org/2010/07/15/flash-builders-lost-features-profiler/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flash-builders-lost-features-profiler</link>
		<comments>http://corlan.org/2010/07/15/flash-builders-lost-features-profiler/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 13:21:09 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=2053</guid>
		<description><![CDATA[
			
				
			
		
Here is the second episode of the Flash Builder&#8217;s Lost Features show. This time I chose to talk about Flash Builder&#8217;s profiler and give you enough info to feel comfortable using it if it&#8217;s new to you. Profiler helps you to locate memory leaks, identify excessive object allocation, or analyze execution times.
With the extension of [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2010/07/15/flash-builders-lost-features-profiler/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2010%2F07%2F15%2Fflash-builders-lost-features-profiler%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2010%2F07%2F15%2Fflash-builders-lost-features-profiler%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Here is the second episode of the Flash Builder&#8217;s Lost Features show. This time I chose to talk about Flash Builder&#8217;s profiler and give you enough info to feel comfortable using it if it&#8217;s new to you. Profiler helps you to locate memory leaks, identify excessive object allocation, or analyze execution times.</p>
<p>With the extension of the Flash Platform on mobile devices, I think that it&#8217;s more important than ever to build Flash applications that run efficiently for a long time. Here is the video (you can watch the video in a higher resolution <a href="http://vimeo.com/13359564" target="_blank">here</a>).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13359564&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=13359564&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>If you want to read more about the &#8220;art&#8221; of profiling then please take the time to read the official (<a href="http://help.adobe.com/en_US/flashbuilder/using/WS6f97d7caa66ef6eb1e63e3d11b6c4d0d21-7edf.html" target="_blank">here</a> and <a href="http://help.adobe.com/en_US/flashbuilder/using/WS6f97d7caa66ef6eb1e63e3d11b6c4d0169-7ff6.html#WS6f97d7caa66ef6eb1e63e3d11b6c4d0d21-7ee2" target="_blank">here</a>) and Ilan Avigdor&#8217;s <a href="http://www.tikalk.com/flex/solving-memory-leaks-using-flash-builder-4-profiler" target="_blank">article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2010/07/15/flash-builders-lost-features-profiler/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AIR apps for viewing Android pictures on desktops</title>
		<link>http://corlan.org/2010/07/08/androidpictures-or-how-to-share-phone-pictures-with-desktops/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=androidpictures-or-how-to-share-phone-pictures-with-desktops</link>
		<comments>http://corlan.org/2010/07/08/androidpictures-or-how-to-share-phone-pictures-with-desktops/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 13:29:33 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=2014</guid>
		<description><![CDATA[
			
				
			
		
This week I had time to play with another idea for Android/Desktop applications: a picture viewer. My friend Alex Chiculita from the AIR team gave me this idea. A couple of weeks ago he played with a multi-screen application that let you load a picture from a device and send the picture to all the [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2010/07/08/androidpictures-or-how-to-share-phone-pictures-with-desktops/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2010%2F07%2F08%2Fandroidpictures-or-how-to-share-phone-pictures-with-desktops%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2010%2F07%2F08%2Fandroidpictures-or-how-to-share-phone-pictures-with-desktops%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>This week I had time to play with another idea for Android/Desktop applications: a picture viewer. My friend Alex Chiculita from the AIR team gave me this idea. A couple of weeks ago he played with a multi-screen application that let you load a picture from a device and send the picture to all the other devices connected to the same Wi-Fi network (the app runs on Android, Windows, MacOS, and Linux).</p>
<p><a href="http://corlan.org/wp-content/uploads/2010/07/icons-pictureviewer.png"><img class="aligncenter size-full wp-image-2017" title="PicturesViewer" src="http://corlan.org/wp-content/uploads/2010/07/icons-pictureviewer.png" border="0" alt="" width="140" height="140" /></a></p>
<p>While playing with his application I realized that I could transform it into something more helpful (at least for me). Here is the challenge: we all use our smartphones for a lot of things, including taking pictures. Having a decent digital camera (this is what a smartphone became lately on top of a mobile phone) with you all the time means you can take interesting pictures. And usually you want to show these pictures to your friends or family. However, here is the problem: while taking pictures is extremely easy, sharing them involves cables,  Bluetooth, or seeing the picture on the phone&#8217;s screen.</p>
<p><a href="http://corlan.org/wp-content/uploads/2010/07/androidpictures_1.jpg"><img class="alignnone size-medium wp-image-2018" title="AndroidPictures Main Screen" src="http://corlan.org/wp-content/uploads/2010/07/androidpictures_1-180x300.jpg" border="0" alt="" width="180" height="300" /></a> <a href="http://corlan.org/wp-content/uploads/2010/07/androidpictures_2.jpg"><img class="alignnone size-medium wp-image-2019" title="AndroidPictures Picture View Screen" src="http://corlan.org/wp-content/uploads/2010/07/androidpictures_2-180x300.jpg" border="0" alt="" width="180" height="300" /></a> <a href="http://corlan.org/wp-content/uploads/2010/07/androidpictures_3.jpg"><img class="alignnone size-medium wp-image-2020" title="AndroidPictures Interacting with the picture" src="http://corlan.org/wp-content/uploads/2010/07/androidpictures_3-179x300.jpg" border="0" alt="" width="179" height="300" /></a></p>
<p>My solution to this problem is AndroidPictures (the above pictures show AndroidPictures in action on my mobile). This Android application lets you browse through the pictures taken with the phone and scale/rotate/pan them. On the desktop, you use the companion AIR application for AndroidPictures, which displays the pictures sent by the Android application. All you have to do to see the pictures with your family is:</p>
<ul>
<li> connect your Android phone to the WI-FI network;</li>
<li>start the AndroidPictures app on your Android phone, and start the PicturesViewer app on one of/all your computers;</li>
<li>what you see on your mobile phone will be replicated on all connected computers.</li>
</ul>
<p>Watch the video below to see how it works.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13191203&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=13191203&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>The making of</h2>
<p>I used Adobe AIR and Flex 4.1 for creating the Android and desktop applications. In order to connect the Android application to the desktop apps I used Peer-to-Peer direct routing (the same approach used in my previous <a href="http://corlan.org/2010/07/02/creating-multi-screen-apps-for-android-and-desktop-using-air/" target="_blank">app</a>). As I already explained, if your local subnet (for example your home Wi-Fi) supports broadcasting then you can create a NetConnection without using Stratus or a Flash Media Server (you connect the NetConnection to &#8220;rtmfp:&#8221;). This is one of the new features available in Flash Player 10.1 and Adobe AIR 2.</p>
<p>Once you have the clients connected, you can send messages from any one to all of them. And the cool thing about using this approach as opposed to Socket servers is that you don&#8217;t have to manually manage all the clients. Your program sends a message and the clients decide how to handle the message. You simply don&#8217;t care how many clients are connected. You can read more on my fellow evangelist Tom&#8217;s <a href="http://www.flashrealtime.com/directed-routing-explained-flash-p2p/" target="_blank">blog</a>.</p>
<p>Because I wanted to use this approach for other apps, I created a simple library (you can get the library&#8217;s source code from <a href="http://corlan.org/downloads/androidpictures/AndroidPicturesProjects.zip">here</a>; unzip the archive and import the PeerToPeer.fxpl project in Flash Builder). You&#8217;ll find three ActionScript classes, and the magic happens inside of MultiCastingService class. The public interface of this service is:</p>
<ul>
<li>isReady</li>
<li>neighborCount</li>
<li>userName</li>
<li>connect()</li>
<li>disconnect()</li>
<li>post()</li>
</ul>
<p>The service throws these events:</p>
<ul>
<li>ServiceEvent.CONNECTED</li>
<li>ServiceEvent.DISCONNECTED</li>
<li>ServiceEvent.PEER_CONNECT</li>
<li>ServiceEvent.PEER_DISCONNECT</li>
<li>ServiceEvent.RESULT</li>
</ul>
<p>The simplest way to use this service would be:</p>
<pre>    var service:MultiCastingService = new MultiCastingService();
    service.addEventListener(ServiceEvent.RESULT, onResult);
    service.addEventListener(ServiceEvent.CONNECTED, onStatusChange);
    service.addEventListener(ServiceEvent.PEER_CONNECT, onStatusChange);

    service.connect();

    private function onResult(e:ServiceEvent):void {
        if (e.what == "picture") {
            //do something with the bytes: e.body
        }
    }

    private function onStatusChange(e:ServiceEvent):void {
        if (e.type == ServiceEvent.PEER_CONNECT) {
            if (service.neighborCount &gt; 0) {
                //others are connected; send a String message
                service.post("this is my message");
            }
        }
    }
</pre>
<p>For the Android app I had to tweak the Spark List in order to make it works with both touch and click events. For the picture interaction I used a <a href="http://tinyurl.com/xdgesture" target="_blank">library</a> created by Tim Kukulski, a member of the Adobe XD team. This library makes it easy to interact with pictures by letting you use gestures like zoom, pan, or rotate.</p>
<p>The desktop application waits and responds to two kinds of messages: picture bytes and pictures transformations (rotation, zooming, or panning). Every time a picture is selected in the Android app, I grab its bytes and send them through the &#8220;wire&#8221;. When I transform a picture in the Android app, I grab the Matrix and send it to all the connected clients. The client applies the Matrix on the picture. And the rest is history :)</p>
<p>All in all it was pretty easy to put together these apps and I had a lot of fun while doing this. If I have the time, I will try to see if I can play the movies recorded with my Android by extending the current code.</p>
<h2>Getting the apps and source-code</h2>
<p>You can download the <a href="http://corlan.org/downloads/androidpictures/AndroidPicturesProjects.zip">source code</a> from here, install the desktop application from <a href="http://corlan.org/downloads/androidpictures/PicturesViewer.air">here</a>, and the Android application from <a href="http://corlan.org/downloads/androidpictures/AndroidPictures.apk">here</a>. If you want to run the Android application, you need to install Adobe AIR on your Android (more info <a href="http://labs.adobe.com/technologies/air2/android/" target="_blank">here</a>).</p>
<p>If you have ideas for more applications that take advantage of having AIR running on Android phones and desktops please let me know. If you create something interesting, I&#8217;d love to hear about. I already have another cool idea, this time more complex and even more fun!</p>
<p>Have fun with the Flash Platform on multiple screens!</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2010/07/08/androidpictures-or-how-to-share-phone-pictures-with-desktops/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Creating multi-screen apps for Android and desktop using AIR</title>
		<link>http://corlan.org/2010/07/02/creating-multi-screen-apps-for-android-and-desktop-using-air/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-multi-screen-apps-for-android-and-desktop-using-air</link>
		<comments>http://corlan.org/2010/07/02/creating-multi-screen-apps-for-android-and-desktop-using-air/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 14:04:52 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=2004</guid>
		<description><![CDATA[
			
				
			
		
Today, I finished a project I&#8217;ve been working since last week: a desktop MP3 Music Player that can be controlled by any number of Android phones. I built these apps using Adobe AIR and the Flex framework. Below you can watch a video with these apps in action, running on Motorola Droid, Nexus One, and [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2010/07/02/creating-multi-screen-apps-for-android-and-desktop-using-air/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2010%2F07%2F02%2Fcreating-multi-screen-apps-for-android-and-desktop-using-air%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2010%2F07%2F02%2Fcreating-multi-screen-apps-for-android-and-desktop-using-air%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Today, I finished a project I&#8217;ve been working since last week: a desktop MP3 Music Player that can be controlled by any number of Android phones. I built these apps using Adobe AIR and the Flex framework. Below you can watch a video with these apps in action, running on Motorola Droid, Nexus One, and my laptop (you can watch <a href="http://vimeo.com/13033633" target="_blank">here</a> the video in a higher resolution).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13033633&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=13033633&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The communication between the remote controls (AIR apps running on Android phones) and  desktop player is done using the peer to peer features of AIR 2 and Flash Player 10.1. Basically if all the parties are connected to the same subnet and if the network allows broadcasting, then you can create a group and send messages to all the members without the need of Stratus or some other service/server.</p>
<p><a href="http://corlan.org/wp-content/uploads/2010/07/desktop-player.png"><img class="aligncenter size-medium wp-image-2005" title="desktop-player" src="http://corlan.org/wp-content/uploads/2010/07/desktop-player-258x300.png" border="0" alt="" width="258" height="300" /></a></p>
<p>Actually, while working on this project I created a small class that enables you to quickly create clients who connect to a local network. Of course, this is only one way of connecting two or more clients. You can use sockets if you want, or one-to-one communication (peer2peer). But I think in both these cases you have to work more, because you have to manually manage all the parties involved. If you want to find out more about peer2peer features of the Flash Platform take a look at <a href="http://tv.adobe.com/watch/max-2009-develop/p2p-on-the-flash-platform-with-rtmfp" target="_blank">this MAX session</a> and read my fellow evangelist Tom Krcha&#8217;s <a href="http://www.flashrealtime.com/" target="_blank">blog</a>.</p>
<p><a href="http://corlan.org/wp-content/uploads/2010/07/android-rc.png"><img class="aligncenter size-medium wp-image-2006" title="android-rc" src="http://corlan.org/wp-content/uploads/2010/07/android-rc-179x300.png" border="0" alt="" width="179" height="300" /></a></p>
<p>The Android app was more fun to build because I used the touch input mode along with click input. I enjoyed a lot tweaking James Ward&#8217;s <a href="http://www.jamesward.com/demos/MobileListSwipe2/srcview/" target="_blank">code</a> for scrolling a Flex List. Believe it or not, again I used Illustrator and Flash Catalyst a lot to create the skins or parts of them.</p>
<p>Until I have the time to put together an article explaining  how these apps were created, please enjoy the video and play with the apps: <a href="http://corlan.org/downloads/MusicPlayer.air">desktop file</a> and <a href="http://corlan.org/downloads/AndroidRemote.apk">APK file</a>. And from <a href="http://corlan.org/downloads/p2pandroid-desktop.zip">here</a> you can download an archive with the source code. If you need the Adobe AIR runtime or AIR SDK for Android, please sign in for the pre-release group <a href="http://labs.adobe.com/technologies/air2/android/" target="_blank">here</a>.</p>
<p>What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2010/07/02/creating-multi-screen-apps-for-android-and-desktop-using-air/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Secret agencies catching up on Flash Builder 4</title>
		<link>http://corlan.org/2010/03/22/secret-agencies-catching-up-on-flash-builder-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=secret-agencies-catching-up-on-flash-builder-4</link>
		<comments>http://corlan.org/2010/03/22/secret-agencies-catching-up-on-flash-builder-4/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:40:09 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=1728</guid>
		<description><![CDATA[
			
				
			
		
After we&#8217;ve launched Flash Builder 4, I received a number of strange calls. Luckily for me, I had my camera nearby and I was able to record the calls. I edited them a little bit, you don&#8217;t want to mess with the secret agencies :D. Here&#8217;s the video:

This is the catch: if you recognize who&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2010/03/22/secret-agencies-catching-up-on-flash-builder-4/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2010%2F03%2F22%2Fsecret-agencies-catching-up-on-flash-builder-4%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2010%2F03%2F22%2Fsecret-agencies-catching-up-on-flash-builder-4%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>After we&#8217;ve launched Flash Builder 4, I received a number of strange calls. Luckily for me, I had my camera nearby and I was able to record the calls. I edited them a little bit, you don&#8217;t want to mess with the secret agencies :D. Here&#8217;s the video:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=10356205&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=10356205&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>This is the catch: if you recognize who&#8217;s impersonating the American, English, and French agents, you get a Flash Builder 4 license (please don&#8217;t ask me about the Russian guy, I have a family :D). There are three guys to recognize and I&#8217;ll give away three licenses (for each correct guess you get a license; you can get only one right and you&#8217;ll get the license). Hurry up, there are only three licenses. Just drop a comment (make sure you fill in your e-mail address)! Good luck!</p>
<p>LATER UPDATE: There&#8217;s one more license for who&#8217;s getting right the person doing the American. I&#8217;ll give you a hint: he&#8217;s an American and he is part of the Flash Platform.</p>
<p>LAST UPDATE: I stopped the contest. The American is Bill Heil, platform product  manager for Flash Builder, he’s overseeing server services area.</p>
<p>I know this one wasn’t easy at all. But then I never said it will be <img src="../wp-includes/images/smilies/icon_biggrin.gif" alt=":D" /> . Next time you should know better!</p>
<p>I did the raffle and the winner of the last license is Mr. Benz. Congratulations!</p>
<p>Thanks to everyone for taking part and I hope you had  a great time!</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2010/03/22/secret-agencies-catching-up-on-flash-builder-4/feed/</wfw:commentRss>
		<slash:comments>151</slash:comments>
		</item>
		<item>
		<title>Google keynote video at Mobile World Congress</title>
		<link>http://corlan.org/2010/02/18/google-keynote-video-at-mobile-world-congress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-keynote-video-at-mobile-world-congress</link>
		<comments>http://corlan.org/2010/02/18/google-keynote-video-at-mobile-world-congress/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 08:43:37 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=1603</guid>
		<description><![CDATA[
			
				
			
		
And here is the video of the keynote. Enjoy!
 
]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2010/02/18/google-keynote-video-at-mobile-world-congress/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2010%2F02%2F18%2Fgoogle-keynote-video-at-mobile-world-congress%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2010%2F02%2F18%2Fgoogle-keynote-video-at-mobile-world-congress%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>And here is the video of the keynote. Enjoy!</p>
<p> <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/8nV--8JTceQ&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/8nV--8JTceQ&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2010/02/18/google-keynote-video-at-mobile-world-congress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Flash: Interview with Mindomo.com</title>
		<link>http://corlan.org/2009/12/15/why-flash-interview-with-mindomo-com/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-flash-interview-with-mindomo-com</link>
		<comments>http://corlan.org/2009/12/15/why-flash-interview-with-mindomo-com/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 09:34:32 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=1459</guid>
		<description><![CDATA[
			
				
			
		
Last week I had the pleasure of interviewing Zoltán Lörincz, the guy behind Mindomo.com. Mindomo.com is one of the coolest mind mapping apps out there and it happens to be a Flex application.
I met Zoltán in 2007 when we talked about Flex Builder 2 and what they want to see in Flex Builder 3. At [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/12/15/why-flash-interview-with-mindomo-com/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F12%2F15%2Fwhy-flash-interview-with-mindomo-com%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F12%2F15%2Fwhy-flash-interview-with-mindomo-com%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Last week I had the pleasure of interviewing Zoltán Lörincz, the guy behind Mindomo.com. Mindomo.com is one of the coolest mind mapping apps out there and it happens to be a Flex application.</p>
<p>I met Zoltán in 2007 when we talked about Flex Builder 2 and what they want to see in Flex Builder 3. At that time Mindomo.com was already in the market, and we knew that we could get a lot of valuable feedback about Flex and Flex Builder from someone who created such a complex app. Since that time they added many new features were added and created a desktop version using AIR. Another interesting feature of their application is the toolbar itself. They implemented probably the only Microsoft Ribbon in Flex out there.</p>
<p>In this interview you can find a short story about the birth of Mindomo.com, and you can learn some of the key features of this application.</p>
<p>I apologize for the image/sound quality. I did this interview remotely and the sound was recorded from the phones.</p>
<p>Enjoy!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8191310&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=8191310&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/12/15/why-flash-interview-with-mindomo-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magnifying Glass AIR 2 application or how to communicate with a Java program from AIR</title>
		<link>http://corlan.org/2009/11/30/magnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=magnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air</link>
		<comments>http://corlan.org/2009/11/30/magnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 06:30:00 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/11/28/magnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air/</guid>
		<description><![CDATA[
			
				
			
		
My favorite feature in Adobe AIR 2 is, by far, Native Processes: the ability to launch and control and communicate with a native process. It could be any executable on the machine where the AIR application is installed. I think this feature opens up a whole new range of AIR applications. When you add this [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/11/30/magnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F11%2F30%2Fmagnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F11%2F30%2Fmagnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>My favorite feature in Adobe AIR 2 is, by far, Native Processes: the ability to launch and control and communicate with a native process. It could be any executable on the machine where the AIR application is installed. I think this feature opens up a whole new range of AIR applications. When you add this feature to the ability to create socket servers, you have a powerful platform to build RIA applications for desktops.</p>
<p>Once I heard that this feature would make it in AIR 2 I was very excited. Why? Well, back in 2008 when we launched AIR 1.0, my fellow evangelist Serge Jespers created one of the coolest AIR applications for the AIR Tour. It was the smallest video player in the world. Basically it let you watch videos in the application icon from the Dock.</p>
<p>The application is extremely cool, but it has a small issue: it is too damn small to be able to see what&#8217;s going on. Being an engineer, I spent some time trying to find an engineering solution. Of course, I could have asked Serge to rewrite the application to make it bigger, but this wouldn’t have been an engineering solution. It would have been something that an accountant or manager would come up with. My solution is to build a second AIR application that can be used to magnify the video played inside the icon. This application would act like a digital magnifying glass.</p>
<p>With AIR 2 I’m finally able to implement the magnifying glass app pretty easily. Below you can see a screenshot of my application in action. It has two windows. The first window is the view port of the magnifying glass. You can see how many frames per second it processes, you can control the amount of zooming, and you can drag it around your screen. The second window displays the magnified image.</p>
<p><a href="http://corlan.org/wp-content/uploads/2009/11/mg_1.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="mg_1" src="http://corlan.org/wp-content/uploads/2009/11/mg_1_thumb.jpg" border="0" alt="mg_1" width="402" height="292" /></a></p>
<h2>The internals</h2>
<p>How did I do it? The application has two main parts. One part is the AIR application itself. It renders the UI, controls the view port and the zoom factor, and scales the image.  The second part is a Java program that captures a screenshot of a portion of the screen. The Java program is controlled by the AIR application.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=7896787&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=7896787&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Using the <em>NativeProcess</em> and <em>NativeProcessStartupInfo</em> classes from AIR 2, you can launch an executable. In order to communicate with the executable you can use standard input and standard output. I wrote the Java program to output the bytes of the screenshot to standard output. It listens to standard input for commands, such as take a shot, set the viewport, or terminate the program. I compiled the Java program as an executable JAR file and placed in the AIR application root folder.</p>
<p>In order to capture the output of the Java program all you have to do is to register a listener on the <em>NativeProcess</em> instance for the standard output events. When you want to send commands you write bytes to the <em>standardInput</em> property of the same object. Here is a snippet of code, for the complete code have a look at the ScreenShotService class from the AIR application.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 247px; background-color: #f4f4f4; max-height: 200px;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">var</span> nativeProcess:NativeProcess;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   2:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">var</span> npInfo:NativeProcessStartupInfo;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   3:</span> <span style="color: #008000">//setting the arguments for starting the Java program</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   4:</span> <span style="color: #0000ff">var</span> arg:Vector.&lt;String&gt; = <span style="color: #0000ff">new</span> Vector.&lt;String&gt;;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   5:</span> arg.push(<span style="color: #006080">"-jar"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   6:</span> arg.push(File.applicationDirectory.resolvePath(<span style="color: #006080">"screenshot.jar"</span>).nativePath);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   7:</span> arg.push(<span style="color: #006080">"130"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   8:</span> arg.push(<span style="color: #006080">"100"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   9:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  10:</span> npInfo = <span style="color: #0000ff">new</span> NativeProcessStartupInfo();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  11:</span> <span style="color: #008000">//setting the path to the native process</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  12:</span> npInfo.executable = <span style="color: #0000ff">new</span> File(<span style="color: #006080">"/Library/Java/Home/bin/java"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  13:</span> npInfo.arguments = arg;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  14:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  15:</span> nativeProcess = <span style="color: #0000ff">new</span> NativeProcess();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  16:</span> nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onStandardOutputData);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  17:</span> <span style="color: #008000">//start the process</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  18:</span> nativeProcess.start(npInfo);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  19:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  20:</span> <span style="color: #008000">/**</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  21:</span> <span style="color: #008000"> * Read the data from the standard ouput.</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  22:</span> <span style="color: #008000"> * Before reading a png, first you have to read the length of the image</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  23:</span> <span style="color: #008000"> */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  24:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">function</span> onStandardOutputData(e:ProgressEvent):<span style="color: #0000ff">void</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  25:</span>     <span style="color: #008000">//reading the available bytes from the standard output buffer of the process</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  26:</span>     nativeProcess.standardOutput.readBytes(_processBuffer, _processBuffer.length, nativeProcess.standardOutput.bytesAvailable);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  27:</span>     ...</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  28:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  29:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  30:</span> <span style="color: #008000">//sending take command to the Java process</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  31:</span> nativeProcess.standardInput.writeMultiByte(<span style="color: #006080">"take\n"</span>, <span style="color: #006080">"utf-8"</span>);</pre>
</div>
</div>
<p>This is the relevant Java code (you can find the complete code inside the source folder of the application, ScreenShot.java):</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 298px; background-color: #f4f4f4; max-height: 200px;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> <span style="color: #008000">/**</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   2:</span> <span style="color: #008000"> * @param width of the screen capture</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   3:</span> <span style="color: #008000"> * @param height of the screen capture</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   4:</span> <span style="color: #008000"> * @param args</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   5:</span> <span style="color: #008000"> */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   6:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   7:</span>      <span style="color: #0000ff">if</span> (args.length == 2) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   8:</span>          width = Integer.parseInt(args[0]);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   9:</span>          height = Integer.parseInt(args[1]);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  10:</span>      }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  11:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  12:</span>     ScreenShot s = <span style="color: #0000ff">new</span> ScreenShot();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  13:</span>     BufferedReader <span style="color: #0000ff">in</span> = <span style="color: #0000ff">new</span> BufferedReader(<span style="color: #0000ff">new</span> InputStreamReader(System.<span style="color: #0000ff">in</span>));</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  14:</span>     String text = <span style="color: #006080">""</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  15:</span>     String[] tokens;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  16:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  17:</span>     <span style="color: #0000ff">while</span> (<span style="color: #0000ff">true</span>) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  18:</span>         <span style="color: #0000ff">try</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  19:</span>             text = <span style="color: #0000ff">in</span>.readLine();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  20:</span>             <span style="color: #0000ff">if</span> (text.equals(<span style="color: #006080">"take"</span>)) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  21:</span>                 s.capturePortion(x, y, width, height);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  22:</span>             } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (text.equals(<span style="color: #006080">"terminate"</span>)) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  23:</span>                 <span style="color: #0000ff">return</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  24:</span>             } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (text.length() &gt; 0) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  25:</span>                 tokens = text.split(<span style="color: #006080">"\\|"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  26:</span>                 <span style="color: #0000ff">if</span> (tokens.length &lt; 4)</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  27:</span>                     <span style="color: #0000ff">continue</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  28:</span>                 x = Integer.parseInt(tokens[0]);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  29:</span>                 y = Integer.parseInt(tokens[1]);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  30:</span>                 width = Integer.parseInt(tokens[2]);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  31:</span>                 height = Integer.parseInt(tokens[3]);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  32:</span>             }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  33:</span>         } <span style="color: #0000ff">catch</span> (IOException e) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  34:</span>             System.err.println(<span style="color: #006080">"Exception while reading the input. "</span> + e);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  35:</span>         }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  36:</span>     }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  37:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  38:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  39:</span> <span style="color: #008000">/**</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  40:</span> <span style="color: #008000"> * Capture a portion of the screen</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  41:</span> <span style="color: #008000"> */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  42:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> capturePortion(<span style="color: #0000ff">int</span> x, <span style="color: #0000ff">int</span> y, <span style="color: #0000ff">int</span> w, <span style="color: #0000ff">int</span> h) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  43:</span>     <span style="color: #0000ff">try</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  44:</span>         <span style="color: #0000ff">if</span> (robot == <span style="color: #0000ff">null</span>)</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  45:</span>             robot = <span style="color: #0000ff">new</span> Robot();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  46:</span>         BufferedImage img = robot.createScreenCapture(<span style="color: #0000ff">new</span> Rectangle(x, y, w, h));</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  47:</span>         ByteArrayOutputStream output = <span style="color: #0000ff">new</span> ByteArrayOutputStream();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  48:</span>         ImageIO.write(img, imageType, output);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  49:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  50:</span>         DataOutputStream dataOutputStream = <span style="color: #0000ff">new</span> DataOutputStream(System.<span style="color: #0000ff">out</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  51:</span>         <span style="color: #008000">//output the buffer size</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  52:</span>         dataOutputStream.writeInt(output.size());</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  53:</span>         <span style="color: #008000">//output the buffer</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  54:</span>         dataOutputStream.write(output.toByteArray());</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  55:</span>         dataOutputStream.flush();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  56:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  57:</span>         output.close();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  58:</span>     } <span style="color: #0000ff">catch</span> (AWTException e) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  59:</span>         System.err.println(<span style="color: #006080">"Exception while capturing screen. "</span> + e);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  60:</span>     } <span style="color: #0000ff">catch</span> (IOException e) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  61:</span>         System.err.println(<span style="color: #006080">"Exception while writting the image bytes. "</span> + e);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  62:</span>     }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  63:</span> }</pre>
</div>
</div>
<p>I am by no means a designer. Still, I think I managed to get a decent look of the main application window using Adobe Illustrator and Flash Catalyst. I created the design in Illustrator, and then using Flash Catalyst I transformed the graphics into a Flex application. And finally using Flash Builder 4 I added the logic.</p>
<h2>Source code and native installers</h2>
<p>You can download the Flex project from <a href="http://corlan.org/downloads/MagnifyingGlass.fxp" target="_blank">here</a>, Mac installer from <a href="http://corlan.org/downloads/MagnifyingGlass.dmg" target="_blank">here</a>, and Windows executable from <a href="http://corlan.org/downloads/MagnifyingGlass.exe" target="_blank">here</a>. This program requires Java 5 or newer and the Adobe AIR 2 runtime.</p>
<h2>Things to know when working with Native Processes in AIR</h2>
<p>In order to enable this feature you need to add the <em>extendedDesktop</em> profile to the application descriptor file. Add this tag as a child of the application tag:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> &lt;supportedProfiles&gt;extendedDesktop&lt;/supportedProfiles&gt;</pre>
</div>
</div>
<p>When using this feature you can’t package your application as an AIR file for distribution. You have to use the native installer. The easiest way to do this is to export for release from Flash Builder (you get the AIR file you normally use to distribute your application). And then you use <em>adt</em> at the command line to create the native installer. If you want a Mac installer you do it on a Mac, if you want a Windows installer you have to do it on a Windows. The command looks like this:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> adt -package -target native myApp.exe myApp.air</pre>
</div>
</div>
<p>More on how to create native installers for AIR applications <a href="adt -package -target native myApp.exe myApp.air" target="_blank">here</a> (make sure you use the <em>adt</em> from AIR 2 and not one from an older version).</p>
<p>If you see an error like in the picture below when you install an application using the generated native installer, you should create a file named .airappinstall.log in your home folder. This log file can tell you what was wrong. In my case the error was “<em>failed while validating native package: Error: Missing digested package file: .DS_Store starting cleanup of temporary files</em>” (I fixed the problem by deleting the .DS_Store file from the source folder).</p>
<p><a href="http://corlan.org/wp-content/uploads/2009/11/mg_2.jpg"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="mg_2" src="http://corlan.org/wp-content/uploads/2009/11/mg_2_thumb.jpg" border="0" alt="mg_2" width="402" height="377" /></a></p>
<p>Finally, you can check at runtime if the application has extended desktop capabilities by using this:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> <span style="color: #0000ff">if</span> (NativeProcess.isSupported)</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   2:</span>     <span style="color: #008000">//extended desktop profile is available</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   3:</span> <span style="color: #0000ff">else</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   4:</span>     //extended desktop profile <span style="color: #0000ff">is</span> not available</pre>
</div>
</div>
<h2>What’s next?</h2>
<p>If you haven’t already, download the Adobe AIR 2 runtime and SDK and play with the new features. You can find a nice article about the new features from AIR 2 on Christian Cantrell’s <a href="http://blogs.adobe.com/cantrell/" target="_blank">blog</a>.</p>
<p>I already have another idea: what about an AIR application that does screen sharing? Keep an eye out I might be able to pull it off!</p>
<p>PS. Many thanks to my friends Chicu and Raul from the Romanian AIR team for their help.</p>
<p><strong>Later Update</strong>: My friend Benjamin Dobler created a nice <a href="http://richapps.de/?p=231" target="_blank">screen recording application</a> with AIR 2 (it captures the sound as well). Although for now the source code is not available, I still think it is worth having a look.</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/11/30/magnifying-glass-air-2-application-or-how-to-communicate-with-a-java-program-from-air/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Flash Builder 4: Network Monitor and new features for debugging</title>
		<link>http://corlan.org/2009/08/31/flash-builder-4-network-monitor-and-new-features-for-debugging/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flash-builder-4-network-monitor-and-new-features-for-debugging</link>
		<comments>http://corlan.org/2009/08/31/flash-builder-4-network-monitor-and-new-features-for-debugging/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 10:17:58 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/08/31/flash-builder-4-network-monitor-and-new-features-for-debugging/</guid>
		<description><![CDATA[
			
				
			
		
In case you haven’t played yet with Network Monitor and the new features for debugging from Flash Builder 4, maybe it is time to see what it&#8217;s all about. Enjoy!

]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/08/31/flash-builder-4-network-monitor-and-new-features-for-debugging/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F08%2F31%2Fflash-builder-4-network-monitor-and-new-features-for-debugging%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F08%2F31%2Fflash-builder-4-network-monitor-and-new-features-for-debugging%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In case you haven’t played yet with Network Monitor and the new features for debugging from Flash Builder 4, maybe it is time to see what it&#8217;s all about. Enjoy!</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6355779&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6355779&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/08/31/flash-builder-4-network-monitor-and-new-features-for-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screencast on data paging with Flash Builder and PHP</title>
		<link>http://corlan.org/2009/08/23/screencast-on-data-paging-with-flash-builder-and-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=screencast-on-data-paging-with-flash-builder-and-php</link>
		<comments>http://corlan.org/2009/08/23/screencast-on-data-paging-with-flash-builder-and-php/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 11:18:14 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=1182</guid>
		<description><![CDATA[
			
				
			
		
Not so long ago I wrote an article on how to enable data paging for a data grid using Flash Builder and a PHP backend. Today, I added a screencast for those of you who prefer to watch instead of read.
Enjoy!

or view in HD
]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/08/23/screencast-on-data-paging-with-flash-builder-and-php/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F08%2F23%2Fscreencast-on-data-paging-with-flash-builder-and-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F08%2F23%2Fscreencast-on-data-paging-with-flash-builder-and-php%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Not so long ago I wrote an <a href="http://corlan.org/2009/07/01/data-paging-with-flex-and-php-in-flash-builder/">article</a> on how to enable data paging for a data grid using Flash Builder and a PHP backend. Today, I added a screencast for those of you who prefer to watch instead of read.</p>
<p>Enjoy!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6175956&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=6175956&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/6175956">or view in HD</a></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/08/23/screencast-on-data-paging-with-flash-builder-and-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a custom scrollbar in Flex 4</title>
		<link>http://corlan.org/2009/08/13/creating-a-custom-scrollbar-in-flex-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-a-custom-scrollbar-in-flex-4</link>
		<comments>http://corlan.org/2009/08/13/creating-a-custom-scrollbar-in-flex-4/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 15:54:37 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=1125</guid>
		<description><![CDATA[
			
				
			
		
In this screen cast I show you how you can use Adobe Illustrator, Flash Catalyst, and Flash Builder 4 to create a scroll bar that looks different depending on the OS that it is used to run the Flex application.

Creating a custom vertical scrollbar in Flex 4 from Mihai Corlan on Vimeo.
]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/08/13/creating-a-custom-scrollbar-in-flex-4/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F08%2F13%2Fcreating-a-custom-scrollbar-in-flex-4%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F08%2F13%2Fcreating-a-custom-scrollbar-in-flex-4%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In this screen cast I show you how you can use Adobe Illustrator, Flash Catalyst, and Flash Builder 4 to create a scroll bar that looks different depending on the OS that it is used to run the Flex application.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6084132&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=6084132&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/6084132">Creating a custom vertical scrollbar in Flex 4</a> from <a href="http://vimeo.com/user1552538">Mihai Corlan</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/08/13/creating-a-custom-scrollbar-in-flex-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe User Group Tour</title>
		<link>http://corlan.org/2009/07/02/adobe-user-group-tour/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-user-group-tour</link>
		<comments>http://corlan.org/2009/07/02/adobe-user-group-tour/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 09:11:19 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/07/02/adobe-user-group-tour/</guid>
		<description><![CDATA[
			
				
			
		
As you probably know, we launched the first public betas for Flash Builder 4, Flash Catalyst, and Flex SDK 4 in June 2009. And we had about 100 events across the world, events that were driven by the communities (Adobe User Groups). I had the pleasure to present at four events: Amsterdam, Netherlands; Bucharest, Romania; [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/07/02/adobe-user-group-tour/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F07%2F02%2Fadobe-user-group-tour%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F07%2F02%2Fadobe-user-group-tour%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>As you probably know, we launched the first public betas for Flash Builder 4, Flash Catalyst, and Flex SDK 4 in June 2009. And we had about 100 events across the world, events that were driven by the communities (Adobe User Groups). I had the pleasure to present at four events: Amsterdam, Netherlands; Bucharest, Romania; Zagreb, Croatia; and Pavia, Italy.</p>
<p>I think all the events went great, and personally I had great fun doing the presentations and talking with the people afterwards. But, from my point of view the Adobe User Group from Netherlands deserves a special mention. Somehow the Netherlands, of all the events I’ve attended so far, has something special that is hard to find in other places. And I am not talking only about the Adobe User Groups events, I found that this is true also for events organized by the PHP community for example.</p>
<p>The location was extraordinary, the audience was big (more than 200 people) and very eager to ask questions, and there was good food and cold beverages, including after hours beer. I can’t stop thinking how it would be to have a MAX event in Amsterdam :) </p>
<p>The organizers taped the event. So, in case there wasn’t a Tour event near you, you can see here the presentations Christoph Rooms and I gave on <a href="http://www.adobeusergroup.nl/site/list_messages/281" target="_blank">Flash Catalyst</a>, <a href="http://www.adobeusergroup.nl/site/list_messages/282" target="_blank">Flex SDK 4</a>, and <a href="http://www.adobeusergroup.nl/site/list_messages/283" target="_blank">Flash Builder 4</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/07/02/adobe-user-group-tour/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Webinale Berlin 2009</title>
		<link>http://corlan.org/2009/06/06/webinale-berlin-2009/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webinale-berlin-2009</link>
		<comments>http://corlan.org/2009/06/06/webinale-berlin-2009/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 12:46:00 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/06/06/webinale-berlin-2009/</guid>
		<description><![CDATA[
			
				
			
		
At the end of May, I had the pleasure of attending the Webinale 2009 conference in Berlin, and presenting two sessions on AIR and Flex. Because Adobe also had a booth, I hung around the sponsors area quite a bit, and I found some interesting projects that were worth shooting a video.
In the first video [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/06/06/webinale-berlin-2009/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F06%2F06%2Fwebinale-berlin-2009%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F06%2F06%2Fwebinale-berlin-2009%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>At the end of May, I had the pleasure of attending the Webinale 2009 conference in Berlin, and presenting two sessions on AIR and Flex. Because Adobe also had a booth, I hung around the sponsors area quite a bit, and I found some interesting projects that were worth shooting a video.</p>
<p>In the first video you can see some iPhone apps that use Augmented Reality created by Metaio (<a href="http://www.metaio.com">http://www.metaio.com</a>). Next year we&#8217;ll have Flash Player 10 on mobile; maybe we&#8217;ll see more examples with FLAR Tool Kit and Flash Player :)</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5016374&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5016374&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/5016374"><br />
</a></p>
<p>The second video presents a project from CSCM (a research group at Bundenswher University of Munich). They said that basically you can call it “Community Wall”. The idea is you can have this system installed, for example, at a conference. And people can use it to find other people that are attending the same conference and are in the same room. You can select the people you want to talk with by looking at their interests, profession, and so on. It looks cool, and I for one,  would love to have this system at conferences. Interestingly, the project was created in Java. I think they worked hard to make it to look so good. I had a chat with one of their engineers, and maybe they will try to use Adobe AIR for the client. I really think this could be a perfect match.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5016855&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5016855&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/5016855"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/06/06/webinale-berlin-2009/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Video tutorial on LiveCycle ES</title>
		<link>http://corlan.org/2009/04/16/video-tutorial-on-livecycle-es/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-tutorial-on-livecycle-es</link>
		<comments>http://corlan.org/2009/04/16/video-tutorial-on-livecycle-es/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 14:07:00 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/04/16/video-tutorial-on-livecycle-es/</guid>
		<description><![CDATA[
			
				
			
		
Duane Nickull posted a video tutorial on LiveCycle ES. You can learn how you can call a function from LiveCycle ES. Watch the video here.
]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/04/16/video-tutorial-on-livecycle-es/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F04%2F16%2Fvideo-tutorial-on-livecycle-es%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F04%2F16%2Fvideo-tutorial-on-livecycle-es%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Duane Nickull posted a video tutorial on LiveCycle ES. You can learn how you can call a function from LiveCycle ES. Watch the video <a href="http://video.google.ca/videoplay?docid=2601122249633361252" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/04/16/video-tutorial-on-livecycle-es/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe TV segment: Generate a Flex/J2EE Database Application</title>
		<link>http://corlan.org/2009/03/02/adobe-tv-segment-generate-a-flexj2ee-database-application/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-tv-segment-generate-a-flexj2ee-database-application</link>
		<comments>http://corlan.org/2009/03/02/adobe-tv-segment-generate-a-flexj2ee-database-application/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 12:13:33 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=704</guid>
		<description><![CDATA[
			
				
			
		
Another segment has been released on Adobe TV, this time on how to generate a Flex and J2EE Database Application.  I was a little bit sleepy and tired after three and a half days of MAX :D. I show how to create such applications using the data wizard, or LiveCycle Data Services and SQL [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/03/02/adobe-tv-segment-generate-a-flexj2ee-database-application/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F03%2F02%2Fadobe-tv-segment-generate-a-flexj2ee-database-application%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F03%2F02%2Fadobe-tv-segment-generate-a-flexj2ee-database-application%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Another segment has been released on <a onclick="javascript:pageTracker._trackPageview('a/http://tv.adobe.com/');" href="http://tv.adobe.com/" target="_blank">Adobe TV</a>, this time on how to generate a <a href="http://tv.adobe.com/#vi+f1472v1058" target="_blank">Flex and J2EE Database Application</a>.  I was a little bit sleepy and tired after three and a half days of MAX :D. I show how to create such applications using the data wizard, or LiveCycle Data Services and SQL Assembler. Enjoy!</p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="467" height="300" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9hZGNfcHJlc2VudHMvNjRfYWRjXzA5NC5mbHY/cnNzX2ZlZWRpZD0xNDcyJnhtbHZlcnM9Mg==&#038;w=467&#038;t=http://tv.adobe.com/#vi+f1472v1058&#038;h=300"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/03/02/adobe-tv-segment-generate-a-flexj2ee-database-application/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Flex Europe Style: Flex is asynchronous!</title>
		<link>http://corlan.org/2009/01/22/flex-europe-style-flex-is-asynchronous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flex-europe-style-flex-is-asynchronous</link>
		<comments>http://corlan.org/2009/01/22/flex-europe-style-flex-is-asynchronous/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 13:08:50 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=553</guid>
		<description><![CDATA[
			
				
			
		
Last year, when I was in Amsterdam, I had this idea of explaining the asynchronous nature of Flex, using something that came to me while visiting Amsterdam&#8217;s Coffee Shops. I have to say that I am a huge fan of Pulp Fiction :)
Anyway, last Sunday night I couldn&#8217;t sleep, so I shot this video. It [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/01/22/flex-europe-style-flex-is-asynchronous/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F22%2Fflex-europe-style-flex-is-asynchronous%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F22%2Fflex-europe-style-flex-is-asynchronous%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Last year, when I was in Amsterdam, I had this idea of explaining the asynchronous nature of Flex, using something that came to me while visiting Amsterdam&#8217;s Coffee Shops. I have to say that I am a huge fan of Pulp Fiction :)</p>
<p>Anyway, last Sunday night I couldn&#8217;t sleep, so I shot this video. It was also a chance for me to get my hands for the first time in movie editing. Adobe Premiere CS4 rocks :).</p>
<p>Click <a href="http://link.brightcove.com/services/player/bcpid1842749445?bctid=8660542001">here</a> to watch the video. Enjoy!</p>
<p>Disclaimer: smoking can kill!</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/01/22/flex-europe-style-flex-is-asynchronous/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MAX 2008 Keynotes available on Adobe TV</title>
		<link>http://corlan.org/2009/01/13/max-2008-keynotes-available-on-adobe-tv/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=max-2008-keynotes-available-on-adobe-tv</link>
		<comments>http://corlan.org/2009/01/13/max-2008-keynotes-available-on-adobe-tv/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 11:54:29 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/01/13/max-2008-keynotes-available-on-adobe-tv/</guid>
		<description><![CDATA[
			
				
			
		
You can watch the keynotes from MAX 2008 on Adobe TV:

Day one keynote: Vectors of Innovation
Day two keynote: The Agency

Personally, I enjoyed the second day keynote a lot. Ben and Tim were super cool!


]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/01/13/max-2008-keynotes-available-on-adobe-tv/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F13%2Fmax-2008-keynotes-available-on-adobe-tv%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F13%2Fmax-2008-keynotes-available-on-adobe-tv%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>You can watch the keynotes from MAX 2008 on <a href="http://tv.adobe.com" target="_blank">Adobe TV</a>:</p>
<ol>
<li><a href="http://tv.adobe.com/#vi+f15385v1039" target="_blank">Day one keynote: Vectors of Innovation</a></li>
<li><a href="http://tv.adobe.com/#vi+f15385v1038" target="_blank">Day two keynote: The Agency</a></li>
</ol>
<p>Personally, I enjoyed the second day keynote a lot. Ben and Tim were super cool!</p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="467" height="300" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9tYXhfMjAwOF9lbnZpc2lvbi8xMTRfbThlXzAwMS5mbHY/cnNzX2ZlZWRpZD0xNTM4NSZ4bWx2ZXJzPTI=&#038;w=467&#038;t=http://tv.adobe.com/vi+f15385v1039&#038;h=300"></embed></p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="467" height="300" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9tYXhfMjAwOF9lbnZpc2lvbi8xMTRfbThlXzAwMi5mbHY/cnNzX2ZlZWRpZD0xNTM4NSZ4bWx2ZXJzPTI=&#038;w=467&#038;t=http://tv.adobe.com/vi+f15385v1038&#038;h=300"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/01/13/max-2008-keynotes-available-on-adobe-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe TV segment: Flex and AMFPHP</title>
		<link>http://corlan.org/2009/01/12/adobe-tv-segment-flex-and-amfphp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-tv-segment-flex-and-amfphp</link>
		<comments>http://corlan.org/2009/01/12/adobe-tv-segment-flex-and-amfphp/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 13:03:53 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/?p=445</guid>
		<description><![CDATA[
			
				
			
		
Another segment was release on Adobe TV, this time on Flex and AMFPHP (at the time when I shoot the video the ZendAMF wasn&#8217;t launched yet). Enjoy.


]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/01/12/adobe-tv-segment-flex-and-amfphp/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F12%2Fadobe-tv-segment-flex-and-amfphp%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F12%2Fadobe-tv-segment-flex-and-amfphp%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Another segment was release on <a href="http://tv.adobe.com/" target="_blank">Adobe TV</a>, this time on <a href="http://tv.adobe.com/#vi+f1472v1039" target="_blank">Flex and AMFPHP</a> (at the time when I shoot the video the ZendAMF wasn&#8217;t launched yet). Enjoy.</p>
<p>
<embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="467" height="300" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9hZGNfcHJlc2VudHMvNjRfYWRjXzA5NC5mbHY/cnNzX2ZlZWRpZD0xNDcyJnhtbHZlcnM9Mg==&#038;w=467&#038;t=http://tv.adobe.com/#vi+f1472v1058&#038;h=300"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/01/12/adobe-tv-segment-flex-and-amfphp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe TV segment: Debug Flex and PHP projects</title>
		<link>http://corlan.org/2009/01/08/adobe-tv-segment-debug-flex-and-php-projects/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-tv-segment-debug-flex-and-php-projects</link>
		<comments>http://corlan.org/2009/01/08/adobe-tv-segment-debug-flex-and-php-projects/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 09:22:01 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2009/01/08/adobe-tv-segment-debug-flex-and-php-projects/</guid>
		<description><![CDATA[
			
				
			
		
My segment on debugging Flex and PHP projects with Flex Builder and Zend Studio was posted on Adobe TV. In case you haven&#8217;t visited Adobe TV for a while, Adobe TV has improved in terms of usability. Now you can dig for what you care about more easily using channels (Education, MAX, Developer&#8230;) and products [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2009/01/08/adobe-tv-segment-debug-flex-and-php-projects/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F08%2Fadobe-tv-segment-debug-flex-and-php-projects%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2009%2F01%2F08%2Fadobe-tv-segment-debug-flex-and-php-projects%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>My segment on debugging Flex and PHP projects with Flex Builder and Zend Studio was posted on <a href="http://tv.adobe.com/#vi+f1472v1034" target="_blank">Adobe TV</a>. In case you haven&#8217;t visited Adobe TV for a while, Adobe TV has improved in terms of usability. Now you can dig for what you care about more easily using channels (Education, MAX, Developer&#8230;) and products (Flash, Flex&#8230;) categories. Enjoy!</p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="467" height="300" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9hZGNfcHJlc2VudHMvNjRfYWRjXzA5NC5mbHY/cnNzX2ZlZWRpZD0xNDcyJnhtbHZlcnM9Mg==&#038;w=467&#038;t=http://tv.adobe.com/#vi+f1472v1058&#038;h=300"></embed></p>
<p>And here is another segment on how to create a combined project Flex and PHP.</p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="467" height="300" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9hZGNfcHJlc2VudHMvNjRfYWRjXzA5NC5mbHY/cnNzX2ZlZWRpZD0xNDcyJnhtbHZlcnM9Mg==&#038;w=467&#038;t=http://tv.adobe.com/#vi+f1472v1058&#038;h=300"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2009/01/08/adobe-tv-segment-debug-flex-and-php-projects/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&quot;First Steps in Flex&quot;, MAX Sessions, and iTunes</title>
		<link>http://corlan.org/2008/12/15/first-steps-in-flex-and-max-sessions-and-itunes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=first-steps-in-flex-and-max-sessions-and-itunes</link>
		<comments>http://corlan.org/2008/12/15/first-steps-in-flex-and-max-sessions-and-itunes/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 12:14:49 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/12/15/first-steps-in-flex-and-max-sessions-and-itunes/</guid>
		<description><![CDATA[
			
				
			
		
Last week I was asked about good resources for learning Flex/AIR. So I have some more resources for you: First Steps in Flex is available for purchase. This book is written by Bruce Eckel and James Ward. I read this book this summer, because I was a member of the review team. And I can [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2008/12/15/first-steps-in-flex-and-max-sessions-and-itunes/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2008%2F12%2F15%2Ffirst-steps-in-flex-and-max-sessions-and-itunes%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2008%2F12%2F15%2Ffirst-steps-in-flex-and-max-sessions-and-itunes%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Last week I was asked about good resources for learning Flex/AIR. So I have some more resources for you: <a href="http://www.firststepsinflex.com/" target="_blank">First Steps in Flex</a> is available for purchase. This book is written by <a href="http://www.mindviewinc.com/Index.php" target="_blank">Bruce Eckel</a> and <a href="http://www.jamesward.com/" target="_blank">James Ward</a>. I read this book this summer, because I was a member of the review team. And I can tell you this book can really help you get up to speed with Flex/ActionScript/AIR very quickly. So, if you are new to Flex world, and you want to learn, then maybe this is the book for you.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/12/frontcover.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/12/frontcover-thumb.jpg" border="0" alt="First Steps in Flex" width="160" height="240" /></a> <a href="http://corlan.org/wp-content/uploads/2008/12/backcover.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/12/backcover-thumb.jpg" border="0" alt="First Steps in Flex" width="160" height="240" /></a></p>
<p>As I said in another post, all the MAX sessions will be available. As a matter of fact, we&#8217;ve started to publish them in batches. You can find them on <a href="http://tv.adobe.com/" target="_blank">Adobe TV</a>:</p>
<ul>
<li><a href="http://tv.adobe.com/#pg+15383" target="_blank">MAX 2008 Design</a></li>
<li><a href="http://tv.adobe.com/#pg+15384" target="_blank">MAX 2008 Develop</a></li>
<li><a href="http://tv.adobe.com/#pg+15385" target="_blank">MAX 2008 Envision</a></li>
</ul>
<p>If you prefer to use <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=299639895" target="_blank">iTunes</a>, then you can find them in the <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=299639895" target="_blank">iTunes</a> as well. Enjoy!</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/12/adc-itunes.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/12/adc-itunes-thumb.png" border="0" alt="iTunes and MAX Sessions" width="240" height="200" /></a></p>
<p><strong>Later Update</strong>: You can enjoy these recordings in <a href="http://get.adobe.com/amp/" target="_blank">Adobe Media Player</a> too. Click on My Favorites, and click on the ADD RSS FEED button and add these feeds:</p>
<ul>
<li><a href="http://rsstv.adobe.com/Max2008Design" target="_blank">http://rsstv.adobe.com/Max2008Design</a></li>
<li><a href="http://rsstv.adobe.com/Max2008Develop" target="_blank">http://rsstv.adobe.com/Max2008Develop</a></li>
<li><a href="http://rsstv.adobe.com/Max2008Envision" target="_blank">http://rsstv.adobe.com/Max2008Envision</a></li>
</ul>
<p><img class="alignnone size-medium wp-image-391" title="amp" src="http://corlan.org/wp-content/uploads/2008/12/amp-300x167.png" alt="amp" width="300" height="167" /></p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/12/15/first-steps-in-flex-and-max-sessions-and-itunes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Flex in a week using video tutorials</title>
		<link>http://corlan.org/2008/12/12/learning-flex-in-a-week-using-video-tutorials/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learning-flex-in-a-week-using-video-tutorials</link>
		<comments>http://corlan.org/2008/12/12/learning-flex-in-a-week-using-video-tutorials/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 09:16:28 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/12/12/learning-flex-in-a-week-using-video-tutorials/</guid>
		<description><![CDATA[
			
				
			
		
I know that different people have different ways of learning things. Some prefer to learn by reading, others by listening, and others by watching videos. If you are new to Flex and you prefer learning Flex by watching movies, then just go here.
You can use AMP (Adobe Media Player) to manage the videos, thus you [...]]]></description>
			<content:encoded><![CDATA[<div class="none" style="float: right; margin-left: 10px;"><g:plusone href="http://corlan.org/2008/12/12/learning-flex-in-a-week-using-video-tutorials/" size="tall" count="true"></g:plusone></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorlan.org%2F2008%2F12%2F12%2Flearning-flex-in-a-week-using-video-tutorials%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorlan.org%2F2008%2F12%2F12%2Flearning-flex-in-a-week-using-video-tutorials%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I know that different people have different ways of learning things. Some prefer to learn by reading, others by listening, and others by watching videos. If you are new to Flex and you prefer learning Flex by watching movies, then just go <a href="http://www.adobe.com/devnet/flex/videotraining/" target="_blank">here</a>.</p>
<p>You can use <a href="http://get.adobe.com/amp/" target="_blank">AMP</a> (Adobe Media Player) to manage the videos, thus you can watch the movies offline, whenever you want.</p>
]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/12/12/learning-flex-in-a-week-using-video-tutorials/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

