<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>James Ward &#187; Salesforce.com</title>
	<atom:link href="http://www.jamesward.com/category/salesforce/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jamesward.com</link>
	<description>Heroku &#124; Java &#124; Scala &#124; Cloud &#124; Open Source &#124; Linux</description>
	<lastBuildDate>Fri, 03 Feb 2012 19:29:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Dreamforce 2010 and Cloudstock</title>
		<link>http://www.jamesward.com/2010/11/30/dreamforce-2010-and-cloudstock/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dreamforce-2010-and-cloudstock</link>
		<comments>http://www.jamesward.com/2010/11/30/dreamforce-2010-and-cloudstock/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 16:24:09 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=2096</guid>
		<description><![CDATA[I&#8217;ll be speaking at Dreamforce again this year! I have two sessions that are going to be super fun! First is a panel called &#8220;Cloud Mobility: Taking Critical Business Functions With You, Whenever, Wherever&#8221; on Wednesday at 3:15 PM. Then on Thursday at 11am I&#8217;ll be co-presenting a session on &#8220;Building Rich User Interfaces with [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be speaking at <a href="http://www.salesforce.com/dreamforce/DF10/home/">Dreamforce</a> again this year!  I have two sessions that are going to be super fun!  First is a panel called &#8220;Cloud Mobility: Taking Critical Business Functions With You, Whenever, Wherever&#8221; on Wednesday at 3:15 PM.  Then on Thursday at 11am I&#8217;ll be co-presenting a session on &#8220;Building Rich User Interfaces with Adobe Flash Builder for Force.com&#8221; with Markus Spohn from Salesforce.com.</p>
<p>Preceding Dreamforce is the <a href="http://www.cloudstockevent.com">Cloudstock</a> event where you can see some other great presentations related to Flex and RIAs.  <a href="http://blog.theflashblog.com/">Lee Brimelow</a> will be doing a presentation on &#8220;Flex and Flash Platform on the Cloud&#8221; that is guaranteed to entertain and educate.  There will also be presentations from Nigel Pegg on Real-time Apps and Keith Sutton on &#8220;Adobe’s Cloud Offerings for Developers and Enterprises&#8221;.</p>
<p>It&#8217;s going to be a great week!  I hope to see you at Dreamforce 2010!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/11/30/dreamforce-2010-and-cloudstock/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Webinar Tomorrow: Building Client/Cloud Apps with Flex and Force.com</title>
		<link>http://www.jamesward.com/2010/09/27/webinar-tomorrow-building-clientcloud-apps-with-flex-and-force-com/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webinar-tomorrow-building-clientcloud-apps-with-flex-and-force-com</link>
		<comments>http://www.jamesward.com/2010/09/27/webinar-tomorrow-building-clientcloud-apps-with-flex-and-force-com/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 14:12:26 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=2031</guid>
		<description><![CDATA[I will co-presenting a free webinar tomorrow (September 28th, 2010) on building Client/Cloud Apps with Flex and Force.com. There are two times you can choose from: September 28, 2010 &#124; 6:00 a.m. PDT &#124; 2:00 p.m. GMT &#124; 6:30 p.m. IST September 28, 2010 &#124; 10:00 a.m. PDT This session will walk through how you [...]]]></description>
			<content:encoded><![CDATA[<p>I will co-presenting a <a href="https://www.developerforce.com/events/flash_builder_webinar/registration.php?d=70130000000FNwb">free webinar</a> tomorrow (September 28th, 2010) on building Client/Cloud Apps with Flex and Force.com.  There are two times you can choose from:</p>
<ul>
<li>September 28, 2010 | 6:00 a.m. PDT | 2:00 p.m. GMT | 6:30 p.m. IST</li>
<li>September 28, 2010 | 10:00 a.m. PDT</li>
</ul>
<p>This session will walk through how you can get started building applications for the web, desktop, and mobile devices using Flex and Force.com.  Salesforce.com and Adobe have worked together on an extension to the Flash Builder tool which enables developers to quickly build applications on top of the Force.com Cloud platform.  I hope you can join me tomorrow!  <a href="https://www.developerforce.com/events/flash_builder_webinar/registration.php?d=70130000000FNwb">Sign up now!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/09/27/webinar-tomorrow-building-clientcloud-apps-with-flex-and-force-com/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bay Area Event: Building RIAs using Flash Builder for Force.com</title>
		<link>http://www.jamesward.com/2010/08/17/bay-area-event-building-rias-using-the-flash-builder-for-force-com/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bay-area-event-building-rias-using-the-flash-builder-for-force-com</link>
		<comments>http://www.jamesward.com/2010/08/17/bay-area-event-building-rias-using-the-flash-builder-for-force-com/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 17:05:10 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1959</guid>
		<description><![CDATA[Salesforce.com is putting on a great event on August 25 in San Mateo, California where you can learn about how to build RIAs on the Cloud with Flash Builder for Force.com. This will be a great opportunity to meet the team that built the tool and learn how to use it! If you can&#8217;t make [...]]]></description>
			<content:encoded><![CDATA[<p>Salesforce.com is putting on a <a href="https://www.developerforce.com/events/sanmateo_developer_meetup/registration.php">great event</a> on August 25 in San Mateo, California where you can learn about how to build RIAs on the Cloud with <a href="http://developer.force.com/flashbuilder">Flash Builder for Force.com</a>.  This will be a great opportunity to meet the team that built the tool and learn how to use it!  If you can&#8217;t make it then check out the article I recently published &#8220;<a href="http://www.jamesward.com/2010/07/26/building-client-cloud-apps-with-flash-builder-for-force-com/">Building Client / Cloud Apps with Flash Builder for Force.com</a>&#8220;.  But if you are in the Bay Area and want to get up to speed quickly on building Client / Cloud apps then <a href="https://www.developerforce.com/events/sanmateo_developer_meetup/registration.php">Register Now</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/08/17/bay-area-event-building-rias-using-the-flash-builder-for-force-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Client / Cloud Apps with Flash Builder for Force.com</title>
		<link>http://www.jamesward.com/2010/07/26/building-client-cloud-apps-with-flash-builder-for-force-com/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-client-cloud-apps-with-flash-builder-for-force-com</link>
		<comments>http://www.jamesward.com/2010/07/26/building-client-cloud-apps-with-flash-builder-for-force-com/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 19:15:25 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1894</guid>
		<description><![CDATA[I have a theory. The majority of people who use enterprise software today use old school Client / Server apps. We&#8217;ve been trying to move these apps to the web for more than ten years. The ease of deployment of web apps is a clear motivator. Yet the client capabilities of the plain old web [...]]]></description>
			<content:encoded><![CDATA[<p>I have a theory.  The majority of people who use enterprise software today use old school Client / Server apps.  We&#8217;ve been trying to move these apps to the web for more than ten years.  The ease of deployment of web apps is a clear motivator.  Yet the client capabilities of the plain old web browser have not been sufficient for many apps to make the leap.  This is why I love Flex and the Flash Platform.  It provides a way to use web technologies and the web deployment model but adds many of the critical things needed for mission critical apps that people use all day long.</p>
<p>But no one wants to go back to the Client / Server architecture.  We want to embrace Cloud Computing architectures but not lose the client capabilities.  What we really need is the Client / Cloud architecture.  We need a web deployment model that provides ease of deployment but also the ability to install applications on our desktops and mobile devices.</p>
<p>This is why I&#8217;m so excited about the new <a href="http://developer.force.com/flashbuilder">Adobe Flash Builder for Force.com</a>.  In a nutshell this is a tool that Adobe and Salesforce.com built together to enable developers to build great software using Flex for the UI and Force.com for the Cloud back-end.  It&#8217;s a wonderful combination of technologies that will help many Client / Server apps make the switch to Client / Cloud.</p>
<p>Applications created with Flash Builder for Force.com can be run in the browser, on the desktop, and on mobile devices.  These applications can be assembled from the hundreds of Flex components that are out there (check out many of them in <a href="http://flex.org/tour">Tour de Flex</a>).</p>
<p>Check out this video to see how to use Flash Builder for Force.com to build a simple app:</p>
<p><object width="640" height="385"><param name="movie" value="http://images.tv.adobe.com/swf/player.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="FlashVars" value="fileID=7230&#038;context=64&#038;embeded=true&#038;environment=production"></param><embed src="http://images.tv.adobe.com/swf/player.swf" flashvars="fileID=7230&#038;context=64&#038;embeded=true&#038;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>As you can see, it&#8217;s very easy to get started.  But I wanted to go a step further and try to build something real&#8211;something that shows a genuine use case for extending beyond the out-of-the-box Salesforce.com UI.  I wanted to keep it really simple so that I could post the code here.  What I came up with is this (in user story form):</p>
<ul>
<li>As a Salesforce.com user I want to take a photo, using my phone, of one of my contacts so that the photo can be saved to their contact record for future reference.</li>
<li>As a Salesforce.com user I want to see photos I&#8217;ve taken of my contacts so that I can be reminded of what they look like.</li>
</ul>
<p>Simple enough.  So here is what I came up with:</p>
<p><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/RIUwh6wk8cY&amp;hl=en_US&amp;fs=1?rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/RIUwh6wk8cY&amp;hl=en_US&amp;fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></p>
<p>To build these two apps I first downloaded and installed <a href="https://www.developerforce.com/events/flashbuilder/registration.php">Flash Builder for Force.com</a>.  I used the <a href="http://www.adobe.com/go/airbetasignup">Adobe AIR for Android prerelease</a> to build the mobile app.  Here is how I created these apps.</p>
<p>First I added a new field to Contact to store the photo.  Salesforce.com doesn&#8217;t have a binary field so I used a large text field (32k limit).  I&#8217;ll store the photo Base64 encoded.</p>
<p>Then in Salesforce.com I saved my enterprise.wsdl file. Check out a <a href="http://wiki.developerforce.com/index.php/Demo_Building_Desktop_Client_for_the_Cloud">great video from Dave Carroll</a> to see how to do this.</p>
<p>Now in Flash Builder for Force.com I created a new Force.com Flex Project for the mobile app.  If you do this on your own and want to run on a mobile device then you will need to overlay the AIR for Android SDK on top of a Flex 4.1 SDK.  Select Desktop Application as the app type.  Replace WindowedApplication with just Application.  And replace the F3DesktopApplication with F3WebApplication since F3DesktopApplication uses APIs that are not available on AIR for Android.  (BTW: Flash Builder, Flex, and Force.com Flex Projects do not officially support mobile deployment yet.  It works but there is no support and no guarantees.)  If you are building a standard Web Application or Desktop Application then you can just leave the generated code as is.</p>
<p>Using the Data/Services wizard I connected to Salesforce.com using my enterprise.wsdl file.  After the services and value objects have been generated I modified the Contact object and added a Bindable account property.  The generated application already included the F3DesktopApplication Declaration used to connect to Salesforce.  Due to an incompatibility with that API and AIR for Android I switched it to use F3WebApplication.  In F3WebApplication&#8217;s loginComplete event handler I query Salesforce.com for Accounts and then Contacts, associate contacts with their account, and then store the contacts:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">app.<span style="color: #006600;">wrapper</span>.<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;select Id, Name from Account&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> AsyncResponder<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">data</span>:ArrayCollection, token:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
    accounts = <span style="color: #0066CC;">data</span>;
    app.<span style="color: #006600;">wrapper</span>.<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;select Id, AccountId, FirstName, LastName, Phone, MobilePhone, Email, Title, Department, MailingCity, photoData__c from Contact&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> AsyncResponder<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">data</span>:ArrayCollection, token:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">for</span> <span style="color: #b1b100;">each</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> contact:Contact <span style="color: #b1b100;">in</span> <span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">for</span> <span style="color: #b1b100;">each</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> account:Account <span style="color: #b1b100;">in</span> accounts<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>account.<span style="color: #006600;">Id</span> == contact.<span style="color: #006600;">AccountId</span><span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#123;</span>
                    contact.<span style="color: #006600;">account</span> = account;						
                <span style="color: #66cc66;">&#125;</span>
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
        contacts = <span style="color: #0066CC;">data</span>;
    <span style="color: #66cc66;">&#125;</span>, handleError<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>, handleError<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Notice in the query that I&#8217;m fetching photoData__c, which is the custom field I created on Contact to store the photo.</p>
<p>In the renderer for a contact I need to either display the photo if there is one or let the user add one.  Here is the simple UI code to handle that:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Group</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span> top=<span style="color: #ff0000;">&quot;8&quot;</span> right=<span style="color: #ff0000;">&quot;8&quot;</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Rect</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:fill</span><span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SolidColor</span> color=<span style="color: #ff0000;">&quot;#cccccc&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:fill</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Rect</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> id=<span style="color: #ff0000;">&quot;addPhoto&quot;</span> text=<span style="color: #ff0000;">&quot;Add a photo&quot;</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> textAlign=<span style="color: #ff0000;">&quot;center&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:BitmapImage</span> id=<span style="color: #ff0000;">&quot;photo&quot;</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Group</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>When the contact is set I check to see if there is a photo and if so display it:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>contact.<span style="color: #006600;">photoData__c</span> == <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    photo.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">false</span>;
    <span style="color: #b1b100;">return</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> decoder:Base64Decoder = <span style="color: #000000; font-weight: bold;">new</span> Base64Decoder<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
decoder.<span style="color: #006600;">decode</span><span style="color: #66cc66;">&#40;</span>contact.<span style="color: #006600;">photoData__c</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> loader:Loader = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
    photo.<span style="color: #006600;">source</span> = event.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">content</span>;
    photo.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
loader.<span style="color: #006600;">loadBytes</span><span style="color: #66cc66;">&#40;</span>decoder.<span style="color: #006600;">toByteArray</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>The data from the photoData__c field is Base64 decoded and then displayed using the Flex BitmapImage component.</p>
<p>Now when the user clicks on the photo or empty photo box I use the AIR for Android CameraUI to grab a photo, resize it, covert it to a PNG, Base64 encode it, set it on the contact, and then save the contact to Salesforce.com:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>CameraUI.<span style="color: #006600;">isSupported</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    cameraUI = <span style="color: #000000; font-weight: bold;">new</span> CameraUI<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    cameraUI.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MediaEvent.<span style="color: #006600;">COMPLETE</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event:MediaEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> loader:Loader = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        loader.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span>event.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">file</span>.<span style="color: #0066CC;">url</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> bitmap:Bitmap = event.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">content</span> as Bitmap;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> result:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">46</span>, <span style="color: #cc66cc;">46</span>, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #000000; font-weight: bold;">var</span> matrix:Matrix = <span style="color: #000000; font-weight: bold;">new</span> Matrix<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            matrix.<span style="color: #006600;">scale</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">46</span> <span style="color: #66cc66;">/</span> bitmap.<span style="color: #0066CC;">width</span>, <span style="color: #cc66cc;">46</span> <span style="color: #66cc66;">/</span> bitmap.<span style="color: #0066CC;">height</span><span style="color: #66cc66;">&#41;</span>;
            result.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span>bitmap, matrix<span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> pngEncoder:PNGEncoder = <span style="color: #000000; font-weight: bold;">new</span> PNGEncoder<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #000000; font-weight: bold;">var</span> pngBytes:ByteArray = pngEncoder.<span style="color: #006600;">encode</span><span style="color: #66cc66;">&#40;</span>result<span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> base64Encoder:Base64Encoder = <span style="color: #000000; font-weight: bold;">new</span> Base64Encoder<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            base64Encoder.<span style="color: #006600;">encodeBytes</span><span style="color: #66cc66;">&#40;</span>pngBytes<span style="color: #66cc66;">&#41;</span>;
            <span style="color: #000000; font-weight: bold;">var</span> encodedImage:<span style="color: #0066CC;">String</span> = base64Encoder.<span style="color: #0066CC;">flush</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
            contact.<span style="color: #006600;">photoData__c</span> = encodedImage;
&nbsp;
            displayPhoto<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
            F3WebApplication.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">wrapper</span>.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span>contact, <span style="color: #000000; font-weight: bold;">new</span> AsyncResponder<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">data</span>:<span style="color: #0066CC;">Object</span>, token:<span style="color: #0066CC;">Object</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #66cc66;">&#125;</span>, FlexGlobals.<span style="color: #006600;">topLevelApplication</span>.<span style="color: #006600;">handleError</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
    cameraUI.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ErrorEvent.<span style="color: #0066CC;">ERROR</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event:ErrorEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
        FlexGlobals.<span style="color: #006600;">topLevelApplication</span>.<span style="color: #006600;">handleError</span><span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
    cameraUI.<span style="color: #006600;">launch</span><span style="color: #66cc66;">&#40;</span>MediaType.<span style="color: #006600;">IMAGE</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>That&#8217;s it for the mobile app!  I compiled it, exported it to an Android app, and then copied it to my phone.  Pretty simple and as you can see it works!  One limitation with my approach is the 32k limit of the photoData__c field.  However, I think I could easily get around that by striping the Base64 encoded data across multiple fields.  It&#8217;s not ideal but it would work.</p>
<p>To display the photo when I view a contact on Salesforce.com I created a very simple Flex app using another Force.com Flex Project.  I could have also added photo upload to this application but chose to keep it simple.  All it does is display the selected contact&#8217;s photo.  Here is the complete code (after generating the required services in Flash Builder):</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span></span>
<span style="color: #000000;">    xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span style="color: #000000;">    xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span></span>
<span style="color: #000000;">    xmlns:flexforforce=<span style="color: #ff0000;">&quot;http://flexforforce.salesforce.com&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>		
    import mx.rpc.AsyncResponder;
    import mx.utils.Base64Decoder;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;flexforforce:F</span>3WebApplication id=<span style="color: #ff0000;">&quot;app&quot;</span> requiredTypes=<span style="color: #ff0000;">&quot;Contact&quot;</span><span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;flexforforce:loginComplete</span><span style="color: #7400FF;">&gt;</span></span>
                app.wrapper.query(&quot;select photoData__c from Contact where Id = '&quot; + this.parameters.contactId + &quot;'&quot;, new AsyncResponder(function(data:Object, token:Object):void {
                    if (data.length == 1)
                    {
                        if (data[0].photoData__c == null)
                        {
                            photo.visible = false;
                            noPhoto.visible = true;
                            return;
                        }
&nbsp;
                        var decoder:Base64Decoder = new Base64Decoder();
                        decoder.decode(data[0].photoData__c);
&nbsp;
                        var loader:Loader = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void {
                            photo.source = event.target.content;
                            photo.visible = true;
                        });
                        loader.loadBytes(decoder.toByteArray());
                    }
                }, function(fault:Object):void {
                    // ignored
                }));
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;/flexforforce:loginComplete</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;/flexforforce:F</span>3WebApplication<span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:applicationComplete</span><span style="color: #7400FF;">&gt;</span></span>
        app.serverUrl = this.parameters.serverUrl;
        app.loginBySessionId(this.parameters.sessionId);
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:applicationComplete</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Rect</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:fill</span><span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SolidColor</span> color=<span style="color: #ff0000;">&quot;#cccccc&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:fill</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Rect</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> id=<span style="color: #ff0000;">&quot;noPhoto&quot;</span> text=<span style="color: #ff0000;">&quot;No Photo&quot;</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span> textAlign=<span style="color: #ff0000;">&quot;center&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> visible=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:BitmapImage</span> id=<span style="color: #ff0000;">&quot;photo&quot;</span> width=<span style="color: #ff0000;">&quot;92&quot;</span> height=<span style="color: #ff0000;">&quot;92&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Finally I created a custom S-Control to run the Flex app:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">object</span> <span style="color: #000066;">classid</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ContactPhoto&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;92&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;92&quot;</span> </span>
<span style="color: #009900;"><span style="color: #000066;">codebase</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;https://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab&quot;</span>&gt;</span> 
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">param</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;movie&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{!Scontrol.JavaArchive}&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span> 
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">param</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;flashvars&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sessionId={!API.Session_ID}&amp;serverUrl={!API.Partner_Server_URL_90}&amp;contactId={!Contact.Id}&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span> 
    <span style="color: #009900;">&lt;embed <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{!Scontrol.JavaArchive}&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;92&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;92&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ContactPhoto&quot;</span> </span>
<span style="color: #009900;">flashvars<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sessionId={!API.Session_ID}&amp;serverUrl={!API.Partner_Server_URL_90}&amp;contactId={!Contact.Id}&quot;</span> </span>
<span style="color: #009900;"><span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;application/x-shockwave-flash&quot;</span> </span>
<span style="color: #009900;">pluginspage<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.adobe.com/go/getflashplayer&quot;</span>&gt;</span> 
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>embed&gt;</span> 
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">object</span>&gt;</span></pre></div></div>

<p>I uploaded the compiled Flex app to the S-Control and added it to the Contact page.  And that&#8217;s it!  In just a few hours I extended Force.com and built a cool mobile app.  I could also have easily created a desktop widget for browsing contacts and adding photos.  If you are looking for a fun project to use as a way to learn this stuff that would be a good one!  :)</p>
<p>Here are some resources to help you get started with Flash Builder for Force.com:</p>
<ul>
<li><a href="http://wiki.developerforce.com/index.php/Force.com_Flex_Quick_Start_Tutorial">Force.com Flex Quick Start Tutorial</a></li>
<li><a href="http://developerforce.s3.amazonaws.com/website/afb/docs/ASDoc_Flex/index.html">Force.com Flex Project APIs for Web Applications</a></li>
<li><a href="http://developerforce.s3.amazonaws.com/website/afb/docs/ASDoc_AIR/index.html">Force.com Flex Project APIs for Desktop Applications</a></li>
<li><a href="http://developer.force.com/flashbuilder">Numerous other demo applications and tutorials</a></li>
<li><a href="http://github.com/jamesward/MobileContacts">Source code for my mobile contacts demo</a></li>
<li><a href="http://github.com/jamesward/WebContactSControl">Source code for my web contact photo viewer demo</a></li>
</ul>
<p>Have fun building the next generation of software!  Let me know how it goes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/07/26/building-client-cloud-apps-with-flash-builder-for-force-com/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Flash Platform and Salesforce.com Webinar and Mobile App</title>
		<link>http://www.jamesward.com/2010/05/26/flash-platform-and-salesforce-com-webinar-and-mobile-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flash-platform-and-salesforce-com-webinar-and-mobile-app</link>
		<comments>http://www.jamesward.com/2010/05/26/flash-platform-and-salesforce-com-webinar-and-mobile-app/#comments</comments>
		<pubDate>Wed, 26 May 2010 16:59:31 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1730</guid>
		<description><![CDATA[Client + Cloud technologies have been quickly evolving and maturing. The combination of Flex and Salesforce.com continue to lead the way for next generation Client + Cloud applications. Recently I did a Webinar on The Flash Platform and Salesforce.com with Dave Carroll from Salesforce. If you missed it you can watch the recording to see [...]]]></description>
			<content:encoded><![CDATA[<p>Client + Cloud technologies have been quickly evolving and maturing.  The combination of Flex and Salesforce.com continue to lead the way for next generation Client + Cloud applications.  Recently I did a <a href="http://seminars.adobe.acrobat.com/p26603860/">Webinar on The Flash Platform and Salesforce.com</a> with Dave Carroll from Salesforce.  If you missed it you can watch the recording to see how you can begin developing Client + Cloud apps.  Also <a href="http://blog.jeffdouglas.com/2010/02/01/adobe-air-applications-with-salesforce/">watch Jeff Douglas demo an offline case management app</a> he built with Flex and Force.com.  Awesome stuff!</p>
<p>Last week I was able to spend a few hours with <a href="http://www.modelmetrics.com">Model Metrics</a> porting their <a href="http://www.modelmetrics.com/solutions/2go-mobile-cloud-platform/">Pharma2GO Adobe AIR app</a> to run on an Android Mobile device.  Using the <a href="http://labs.adobe.com/technologies/air2/android/">AIR for Android Prerelease</a> we quickly created a mobile friendly UI with Flex and reused the same data sync code from the desktop app.  Check out the end result:<br />
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Lle24eGjNBs&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Lle24eGjNBs&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>Listen to what Model Metrics had to say about this in their blog &#8220;<a href="http://www.modelmetrics.com/general/html-5-%E2%80%93-ready-for-primetime-in-the-enterprise/">HTML 5 – Ready for Primetime in the Enterprise?</a>&#8220;:</p>
<blockquote><p>One of our early iPhone products on the iTunes AppStore was Search2GO, a simple search tool for Salesforce.com.  This was built in Objective C and it took approximately 8 weeks to develop.  Yesterday I watched two developers create over half of this same functionality using Flex/AIR and had it running on an Android phone in a day.  Granted there are still things that could be added, but this was a great illustration of why Flex/AIR is a great toolset.</p></blockquote>
<p>These are exciting times for Client + Cloud apps now that the &#8220;Client&#8221; can easily be on the web, desktop, and mobile device using the same technologies and tools!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/05/26/flash-platform-and-salesforce-com-webinar-and-mobile-app/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex and The Cloud</title>
		<link>http://www.jamesward.com/2010/01/19/flex-and-the-cloud-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flex-and-the-cloud-2</link>
		<comments>http://www.jamesward.com/2010/01/19/flex-and-the-cloud-2/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 22:49:53 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1490</guid>
		<description><![CDATA[The combination of Flex and The Cloud is quickly becoming an IT and paradigm changing combination. Here are a number of recently published resources for learning more about this : An article I wrote has been published on the online Flash &#38; Flex Developer&#8217;s Magazine: Flex and The Cloud: Is this really just Client/Server 2.0? [...]]]></description>
			<content:encoded><![CDATA[<p>The combination of Flex and The Cloud is quickly becoming an IT and paradigm changing combination.  Here are a number of recently published resources for learning more about this :</p>
<ul>
<li>An article I wrote has been published on the online Flash &amp; Flex Developer&#8217;s Magazine: <a href="http://ffdmag.com/download-1-2010">Flex and The Cloud: Is this really just Client/Server 2.0?</a></li>
<li>I&#8217;ll be speaking on <a href="http://ria5280.org/calendar/event/2010/2/18/163821">Thursday, February 18 2010 at the Denver Flex User Group</a> about Flex and The Cloud</li>
<li>The <a href="http://www.adobe.com/cfusion/event/index.cfm?event=list&#038;loc=en_us&#038;type=ondemand_seminar&#038;product=&#038;interest=int_rich_internet_applications&#038;audience=&#038;sdid=EGMQU">recording of a webinar</a> I co-hosted on the new Salesforce.com Cloud platform for developers has been posted</li>
<li>Jeff Douglas has posted <a href="http://blog.jeffdouglas.com/2010/01/11/developing-apps-with-the-stratus-framework/">a video walk through</a> showing how to use the new Salesforce.com Flash Builder 4 extension for Flex + Cloud apps</li>
</ul>
<p>Exciting stuff!  Let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/01/19/flex-and-the-cloud-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Right90&#8242;s Super-Sexy Enterprise Flex RIA</title>
		<link>http://www.jamesward.com/2010/01/13/right90s-super-sexy-enterprise-flex-ria/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=right90s-super-sexy-enterprise-flex-ria</link>
		<comments>http://www.jamesward.com/2010/01/13/right90s-super-sexy-enterprise-flex-ria/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 19:41:07 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA Cowboy Videos]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1477</guid>
		<description><![CDATA[While at Dreamforce 2009 I was able to see some amazing enterprise Flex RIAs. Here is an RIA Cowboy Video of Right90&#8216;s Sales Forecasting application. Let me know what you think.]]></description>
			<content:encoded><![CDATA[<p>While at Dreamforce 2009 I was able to see some amazing enterprise Flex RIAs.  Here is an RIA Cowboy Video of <a href="http://www.right90.com/">Right90</a>&#8216;s Sales Forecasting application.  Let me know what you think.</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="349" id="viddler_f0b83e46"><param name="movie" value="http://www.viddler.com/player/f0b83e46/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/f0b83e46/" width="545" height="349" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_f0b83e46"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/01/13/right90s-super-sexy-enterprise-flex-ria/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Salesforce.com and the Adobe Flash Platform eSeminar</title>
		<link>http://www.jamesward.com/2009/12/11/salesforce-com-and-the-adobe-flash-platform-eseminar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=salesforce-com-and-the-adobe-flash-platform-eseminar</link>
		<comments>http://www.jamesward.com/2009/12/11/salesforce-com-and-the-adobe-flash-platform-eseminar/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 18:20:35 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1411</guid>
		<description><![CDATA[On Thursday December 17th I&#8217;ll be doing an eSeminar about Salesforce.com and the Adobe Flash Platform. This is a great opportunity to learn more about how to build Flex RIAs on the Cloud using the new Flash Builder for Force.com tool. Sign up and see more details. Hope to see you there!]]></description>
			<content:encoded><![CDATA[<p>On Thursday December 17th I&#8217;ll be doing an eSeminar about Salesforce.com and the Adobe Flash Platform.  This is a great opportunity to learn more about how to build Flex RIAs on the Cloud using the new Flash Builder for Force.com tool.  <a href="http://www.adobe.com/cfusion/event/index.cfm?event=detail&#038;id=1489921&#038;loc=en_us">Sign up and see more details</a>.  Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/12/11/salesforce-com-and-the-adobe-flash-platform-eseminar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex At Dreamforce 2009</title>
		<link>http://www.jamesward.com/2009/11/19/flex-at-dreamforce-2009/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flex-at-dreamforce-2009</link>
		<comments>http://www.jamesward.com/2009/11/19/flex-at-dreamforce-2009/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 16:51:17 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=1366</guid>
		<description><![CDATA[This week I&#8217;m in San Francisco at Dreamforce &#8211; Salesforce.com&#8217;s yearly conference. It&#8217;s amazing to walk around the expo hall and see how much Flex is being used in enterprise products and services. Like last year I&#8217;ve been recording some videos of some of the great enterprise Flex apps here. Also Greg Wilson has been [...]]]></description>
			<content:encoded><![CDATA[<p>This week I&#8217;m in San Francisco at Dreamforce &#8211; Salesforce.com&#8217;s yearly conference.  It&#8217;s amazing to walk around the expo hall and see how much Flex is being used in enterprise products and services.  Like <a href="http://www.jamesward.com/blog/?s=Dreamforce+2008">last year</a> I&#8217;ve been recording some videos of some of the great enterprise Flex apps here.  Also <a href="http://gregsramblings.com/">Greg Wilson</a> has <a href="http://twitter.com/gregorywilson">been tweeting</a> a few pics of some of these apps including <a href="http://www.jamesward.com/2010/01/13/right90s-super-sexy-enterprise-flex-ria/">right90 (update: now a video instead of a pic)</a> and <a href="http://twitpic.com/q16ak">PivotLink</a> with more to come.</p>
<p>Many of the Flex applications that people have built on top of Salesforce.com / Force.com today use <a href="http://developer.force.com/flextoolkit">the existing Flex Toolkit for Force.com</a>.  The new <a href="http://www.jamesward.com/blog/2009/10/26/adobe-and-salesforce-com-unite-ria-and-the-cloud/">Flash Builder for Force.com</a> tool today only supports desktop applications with Adobe AIR &#8211; but will also support web applications in the future.  But you can still use the existing Toolkit within Flash Builder for Force.com.  All you need to do is configure your project to use the Flex 3.4 SDK and add the force-flex.swc file to the project&#8217;s libs folder.  That&#8217;s it!</p>
<p>If you aren&#8217;t at Dreamforce and want to learn about the new Flash Builder for Force.com then check out <a href="http://salesforce.acrobat.com/p18708894/">the recording from a webinar</a> I co-presented a few weeks ago.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/11/19/flex-at-dreamforce-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe and Salesforce.com Unite RIA and The Cloud</title>
		<link>http://www.jamesward.com/2009/10/26/adobe-and-salesforce-com-unite-ria-and-the-cloud/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-and-salesforce-com-unite-ria-and-the-cloud</link>
		<comments>http://www.jamesward.com/2009/10/26/adobe-and-salesforce-com-unite-ria-and-the-cloud/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 16:17:03 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[LCDS]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=1270</guid>
		<description><![CDATA[The two major trends transforming software right now are Rich Internet Applications (RIAs) and Cloud Computing / Software as a Service (SaaS or PaaS). These trends are driven by two needs: Full client capabilities, which allow software to perform optimally and increase usability Easy deployment, which allows developers to focus on business needs instead of [...]]]></description>
			<content:encoded><![CDATA[<p>The two major trends transforming software right now are Rich Internet Applications (RIAs) and Cloud Computing / Software as a Service (SaaS or PaaS).  These trends are driven by two needs:</p>
<ul>
<li>Full client capabilities, which allow software to perform optimally and increase usability
<li>
<li>Easy deployment, which allows developers to focus on business needs instead of building infrastructure</li>
</ul>
<p>The combination of RIA and Cloud is the future of software because it provides full client capabilities and easy deployment.  The chart below illustrates this in comparison to the other major software architectures (main-frame, client / server, and web).</p>
<p><img src="http://www.jamesward.com/blog/wp-content/uploads/2009/10/RIA.png" alt="RIA" title="RIA" width="600" height="370" class="alignnone size-full wp-image-1272" /></p>
<p>In line with these trends Adobe and Salesforce.com <a href="http://bit.ly/w29bL">announced today</a> that they are working together to unite Rich Internet Applications and The Cloud.  At the core of this announcement is a developer preview of the <a href="http://developer.force.com/flashbuilder">Adobe Flash Builder for Force.com</a> tool.  This tool enables developers to easily build intuitive user interfaces with Flex which connect to the Force.com cloud platform and Salesforce.com CRM data.  These applications can be deployed either in the browser or on the desktop using Adobe AIR.  When utilizing Adobe AIR, the applications can still function when users are disconnected.  Later, when users reconnect, the changes are synchronized with Force.com using the LiveCycle Data Services synchronization engine.</p>
<p>Being able to connect Flex applications to Salesforce.com / Force.com has been possible (and easy) since I co-created what was originally called the <a href="http://www.jamesward.com/blog/2007/04/17/the-open-source-flex-and-apollo-toolkit-for-salesforcecom/">Flex Toolkit for Apex</a>.  So while it has been possible to build Rich Cloud Applications for a few years, today&#8217;s announcement is significant for a few reasons:</p>
<ul>
<li>Adobe and Salesforce are now officially partnered together around Rich Cloud Applications</li>
<li>Much better, officially supported developer tooling</li>
<li>Much better offline data synchronization</li>
</ul>
<p>It&#8217;s really exciting to see how the vision of Rich Cloud Applications is becoming reality!</p>
<p>If you&#8217;d like to learn more or try out the new tooling check out these resources:</p>
<ul>
<li><a href="http://developer.force.com/flashbuilder">Get the developer preview and watch video demos</a></li>
<li><a href="http://www.adobe.com/devnet/salesforce/index.html?devcon=f1">Get inspired and see how it works</a></li>
<li><a href="http://www.youtube.com/watch?v=vUsC8sdJaE0">Watch a video walk-through</a></li>
</ul>
<p>Another great way to learn more is to sign up for a <a href="https://www.developerforce.com/events/flashbuilder_webinar/registration.php?d=70130000000EuzT">Webinar / Tech Talk</a> that I will be co-presenting.</p>
<p>Let me know what you think about this exciting new partnership and developer tooling.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/10/26/adobe-and-salesforce-com-unite-ria-and-the-cloud/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

