<?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>Life As An Evangelist &#187; blogs</title>
	<atom:link href="http://lifeasanevangelist.com/category/blogs/feed/" rel="self" type="application/rss+xml" />
	<link>http://lifeasanevangelist.com</link>
	<description>Keep up to date with Adobe's Platform Evangelists</description>
	<lastBuildDate>Sun, 20 May 2012 05:21:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Quick Tip: Targeting new AIR SDK in Flash CS6</title>
		<link>http://www.leebrimelow.com/?p=3335</link>
		<comments>http://www.leebrimelow.com/?p=3335#comments</comments>
		<pubDate>Fri, 18 May 2012 23:00:57 +0000</pubDate>
		<dc:creator>Lee Brimelow</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://www.leebrimelow.com/?p=3335</guid>
		<description><![CDATA[I had no idea that this feature was in Flash CS6. Finally we can easily target new versions of AIR! Check out how in the tip below. Thanks to Daniel Albu for tipping me off about this.


	
	
	
	
	
	
		
		
		
	
		

  


	
	
	

]]></description>
			<content:encoded><![CDATA[<p>I had no idea that this feature was in Flash CS6. Finally we can easily target new versions of AIR! Check out how in the tip below. Thanks to <a href="http://active.tutsplus.com/tutorials/workflow/enable-the-latest-air-sdk-in-flash-professional-cs5-5/#cs6">Daniel Albu</a> for tipping me off about this.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_player_1325479782"
			class="flashmovie"
			width="680"
			height="384">
	<param name="movie" value="http://leebrimelow.com/flash/player.swf" />
	<param name="flashvars" value="skin=http://leebrimelow.com/flash/glow.zip&#038&amp;file=http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/qt6.mov&#038&amp;image=http://leebrimelow.com/images/qt.gif&#038&amp;controlbar=over" />
	<param name="menu" value="false" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://leebrimelow.com/flash/player.swf"
			name="fm_player_1325479782"
			width="680"
			height="384">
		<param name="flashvars" value="skin=http://leebrimelow.com/flash/glow.zip&#038&amp;file=http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/qt6.mov&#038&amp;image=http://leebrimelow.com/images/qt.gif&#038&amp;controlbar=over" />
		<param name="menu" value="false" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		<br />
<video width="680" height="384" controls><br />
  <source src="http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/qt6.mov" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'><br />
</video><br />

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.leebrimelow.com/?feed=rss2&#038;p=3335</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/qt6.mov" length="7802640" type="video/quicktime" />
		</item>
		<item>
		<title>Apple 10.7.4 IMPORTANT NOTICE BEFORE UPGRADING!</title>
		<link>http://feedproxy.google.com/~r/blogspot/NUcQv/~3/zjG7zBz4_Zc/apple-1074-important-notice-before.html</link>
		<comments>http://feedproxy.google.com/~r/blogspot/NUcQv/~3/zjG7zBz4_Zc/apple-1074-important-notice-before.html#comments</comments>
		<pubDate>Fri, 18 May 2012 16:51:00 +0000</pubDate>
		<dc:creator>Duane Nickull</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[


I had a hard drive issue the other day and decided to upgrade and re-install my OS on a new drive. &#160;I started by installing OSX Snow Leopard and then upgraded to Lion 10.7, which immediately prompted some updates to the OS, leaving me with 10.7...]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/TPPRUEgn9l-4m54VLdiRhswVHGk/0/da"><img src="http://feedads.g.doubleclick.net/~a/TPPRUEgn9l-4m54VLdiRhswVHGk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TPPRUEgn9l-4m54VLdiRhswVHGk/1/da"><img src="http://feedads.g.doubleclick.net/~a/TPPRUEgn9l-4m54VLdiRhswVHGk/1/di" border="0" ismap="true"></img></a></p><div dir="ltr" style="text-align: left;" trbidi="on">
I had a hard drive issue the other day and decided to upgrade and re-install my OS on a new drive. &nbsp;I started by installing OSX Snow Leopard and then upgraded to Lion 10.7, which immediately prompted some updates to the OS, leaving me with 10.7.4. My machine is a Mac Pro running 2 X 3 GHz Quad-Core Intel Xenon processors.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-w_C40d-b4-8/T7Z5ZUZxy7I/AAAAAAAABTg/wL9OkAB2LjY/s1600/Screen+Shot+2012-05-18+at+9.27.02+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://2.bp.blogspot.com/-w_C40d-b4-8/T7Z5ZUZxy7I/AAAAAAAABTg/wL9OkAB2LjY/s400/Screen+Shot+2012-05-18+at+9.27.02+AM.png" width="335" /></a></div>
<br />
<br />
To my horror, when I went to install Sorenson Squeeze 5, which is market on the outside package as "Universal" install for Mac meaning it runs on both PPC and Intel architectures. &nbsp;When you open the folder, there are two installers - one for Intel based Macs (like mine) and one for PPC based Macs.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-dVt4W-C5IeM/T7Z5wcEtTDI/AAAAAAAABTo/hUxe0hYZsY8/s1600/Screen+Shot+2012-05-18+at+9.28.12+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="143" src="http://1.bp.blogspot.com/-dVt4W-C5IeM/T7Z5wcEtTDI/AAAAAAAABTo/hUxe0hYZsY8/s400/Screen+Shot+2012-05-18+at+9.28.12+AM.png" width="400" /></a></div>
<br />
PPC is no longer supported but to my horror, when I tried to install the Intel version, I got the following message.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-u75PXI4Swvg/T7Z53lPeH2I/AAAAAAAABTw/fxLDi6O44VY/s1600/Screen+Shot+2012-05-18+at+9.28.29+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="131" src="http://2.bp.blogspot.com/-u75PXI4Swvg/T7Z53lPeH2I/AAAAAAAABTw/fxLDi6O44VY/s400/Screen+Shot+2012-05-18+at+9.28.29+AM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I got the same behavior with several other "universal" installs so I set up a call with Apple to discuss this, thinking it is obviously a bug. &nbsp;The call took place at 9:00 AM PDT and I am going to share with you what was said to me. &nbsp;BTW = if anyone from Apple wants to know who the person was, the case was <b>Express Lane Case 315474064</b>: Scheduled Support Call. &nbsp; &nbsp;First &nbsp;the Apple guy told me it was because Lion no longer supports PPC. &nbsp;I told him that up until the day before, I had my Final Cut Pro and Sorenson running on this same machine with the Lion OSX. &nbsp;He was unapologetic and told me I just had to just pay Apple to upgrade to a newer version of Final Cut Pro. &nbsp;My reaction was to put my hands up and say "don't shoot" but I politely suggested this sort of&nbsp;behaviour&nbsp;was not appropriate given the stamp "Universal" means it runs on Intel. &nbsp; I also told him that by him telling me I had to go and upgrade all my software was akin to robbery. &nbsp; I told him I was going to blog about this and he got really worried and said he had not said anything and I should refer to the website. &nbsp; &nbsp;He said "I didn't say that and anything you say you are making up".</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Sorry pal. &nbsp;The truth is the truth and this blog stays here! &nbsp;That's final. &nbsp;Nio court gag order will take this down.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Well, I am blogging about because other people might want to know about this. &nbsp;There is an error and I hope someone from Apple reads this and sorts it out. &nbsp; Please be warned!&nbsp;</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-TJcnOCD9SHs/T7aE7HpdXoI/AAAAAAAABUI/o5-TdkNVyJ4/s1600/Screen+Shot+2012-05-18+at+10.19.46+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-TJcnOCD9SHs/T7aE7HpdXoI/AAAAAAAABUI/o5-TdkNVyJ4/s320/Screen+Shot+2012-05-18+at+10.19.46+AM.png" width="239" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Dear Apple: &nbsp;Please explain what "universal" really means? &nbsp;From their <a href="http://www.apple.com/hk/en/intel/">website</a>:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
"<span style="background-color: white; color: #888888; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, Arial, Verdana, sans-serif; font-size: 16px; line-height: 22px; text-align: -webkit-auto;">Now every new Mac ships with an Intel processor. Experience delightful responsiveness from the smallest Mac mini to the most beefed-up Mac Pro. Use one of more than 7,000 universal applications that take full advantage of the Intel chip."</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #888888; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, Arial, Verdana, sans-serif; font-size: 16px; line-height: 22px; text-align: -webkit-auto;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #888888; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, Arial, Verdana, sans-serif; font-size: 16px; line-height: 22px; text-align: -webkit-auto;">Hmmmm.</span></div>
<br /></div><div class="blogger-post-footer">Original post at <a href="http://technoracle.blogspot.com">http://technoracle.blogspot.com</a><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17460203-702868667736886956?l=technoracle.blogspot.com' alt='' /></div><img src="http://feeds.feedburner.com/~r/blogspot/NUcQv/~4/zjG7zBz4_Zc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technoracle.blogspot.com/feeds/702868667736886956/comments/default</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Simple Offline Data Synchronization for Mobile Web and PhoneGap Applications</title>
		<link>http://coenraets.org/blog/2012/05/simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications</link>
		<comments>http://coenraets.org/blog/2012/05/simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications#comments</comments>
		<pubDate>Wed, 16 May 2012 19:36:45 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=3652</guid>
		<description><![CDATA[Being able to work offline is an expected feature of mobile applications. For data-driven applications, it means that you &#8212; the developer &#8212; will have to store (a subset of) your application data locally, and implement a data synchronization mechanism that keeps your local and server data in sync. In this article, I describe a [...]
	
<!-- Start WP Socializer Plugin - Retweet Button -->
<a href="http://twitter.com/?status=RT%20@%20Simple%20Offline%20Data%20Synchronization%20for%20Mobile%20Web%20and%20PhoneGap%20Applications%20http://coenraets.org/blog/?p=3652" target="_blank">Retweet this</a>
<!-- End WP Socializer Plugin - Retweet Button -->

	
	
<!-- Start WP Socializer Plugin - Facebook Button -->
<a href="https://www.facebook.com/sharer.php?u=http://coenraets.org/blog/2012/05/simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications/" target="_blank">Share on Facebook</a>
<!-- End WP Socializer Plugin - Facebook Button -->



Follow @ccoenraets
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");]]></description>
			<content:encoded><![CDATA[<p>Being able to work offline is an expected feature of mobile applications. For data-driven applications, it means that you &#8212; the developer &#8212; will have to store (a subset of) your application data locally, and implement a data synchronization mechanism that keeps your local and server data in sync.</p>
<p>In this article, I describe a simple data synchronization strategy that uses the device&#8217;s (or browser&#8217;s) SQLite database. The implementation currently leverages the Web SQL API (even though the W3C is no longer actively maintaining the spec) because both iOS and Android support it, but they don&#8217;t support IndexedDB, the official alternative. However, the API described below &#8212; getLastSync(), getChanges(), applyChanges() &#8212; defines a generic synchronization contract, and the solution can be expanded and made &#8220;pluggable&#8221;: You could create different synchronization objects, each providing a different implementation of these methods. You could then choose which object to plug in based on the context and the platform your application is running on.</p>
<h4>Try it in the Playground</h4>
<p><a href="http://coenraets.org/offline-sync/client-app"><img src="http://coenraets.org/blog/wp-content/uploads/2012/05/Screen-Shot-2012-05-16-at-21.jpg" alt="" title="Screen Shot 2012-05-16 at 2" width="640" height="760" class="aligncenter size-full wp-image-3734" /></a><br />
<span id="more-3652"></span><br />
Before looking at the code, you can try some offline syncing in this a hosted playground:</p>
<ol>
<li>Open the <a href="http://coenraets.org/offline-sync/client-app">Offline Client Playground</a> in Chrome or Safari (they both support Web SQL).</li>
<li>Click the Synchronize button.</li>
<li>Look at the log (the textarea in the middle of the screen): Because it&#8217;s the first time you use the application, all the employees have been downloaded from the server and inserted in your local SQLite database.</li>
<li>Clear the log, click the Synchronize button, and look at the log again: because you now have an up-to-date local version of the data, the server didn&#8217;t return any change and your local database remains unchanged.</li>
<li>In another tab, open the <a href="http://coenraets.org/offline-sync/server-app">Server Admin PlayGround</a>.</li>
<li>Modify an existing employee and click Save. (Don&#8217;t worry, it&#8217;s using your own session-based data set).</li>
<li>Go back to the Offline Client tab, click Synchronize, and notice that the server returned one change,  and that it was applied to your local database.</li>
<li>Go back to the Server Admin tab and modify (create, update, delete) other employees. Switch back to the Offline Client tab, click Synchronize, and see how these changes are applied to your local database.</li>
<li>You can also use the Resources Tab in the Chrome Developer Tools to inspect your local database.</li>
</ol>
<h4>Server API</h4>
<p>The only piece of infrastructure you need at the server side is an API that returns the items that have changed (created, updated, or deleted) since a specific moment in time expressed as a timestamp. </p>
<p>Here is the RESTful API call used in my application:</p>
<p><a href="http://coenraets.org/offline-sync/api/employees?modifiedSince=2012-03-01%2010:20:56">http://coenraets.org/offline-sync/api/employees?modifiedSince=2012-03-01 10:20:56</a></p>
<p>The format of the data returned by the server is up to you and is part of the contract between the client and the server. In this application, the server returns the changes as an array of JSON objects. The server-side technology (RoR, PHP, Java, .NET, &#8230;) and database system (SQL, NoSQL, &#8230;) you use to generate the list of changes is also totally up to you. I provide a simple PHP implementation as part of the source code. That implementation manages a session-based data set that provides an isolated and transient playground. In a real-life application, you&#8217;d obviously get the data from some sort of database.</p>
<h5>Client API</h5>
<p>At the client side, our synchronization API consists of three methods.</p>
<h6>getLastSync()</h6>
<p>A method that returns a timestamp to be used as the query parameter for the next synchronization request. A common practice is to persist a timestamp after each synchronization request. But things can go wrong and the timestamp itself can get out-of-sync. I prefer to &#8220;recalculate&#8221; the lastSync timestamp before each synchronization request.   </p>
<pre class="brush: jscript; title: ; notranslate">
getLastSync: function(callback) {
    this.db.transaction(
        function(tx) {
            var sql = &quot;SELECT MAX(lastModified) as lastSync FROM employee&quot;;
            tx.executeSql(sql, this.txErrorHandler,
                function(tx, results) {
                    var lastSync = results.rows.item(0).lastSync;
                    callback(lastSync);
                }
            );
        }
    );
}
</pre>
<h6>getChanges()</h6>
<p>This is a wrapper around an Ajax call to the server-side API that returns the items that have changed (created, updated, or deleted) since a specific moment in time defined in the modifiedSince parameter. </p>
<pre class="brush: jscript; title: ; notranslate">
getChanges: function(syncURL, modifiedSince, callback) {

    $.ajax({
        url: syncURL,
        data: {modifiedSince: modifiedSince},
        dataType:&quot;json&quot;,
        success:function (changes) {
            callback(changes);
        },
        error: function(model, response) {
            alert(response.responseText);
        }
    });

}
</pre>
<h6>applyChanges()</h6>
<p>A method that persists the changes in your local data store. Notice that SQLite supports a convenient &#8220;INSERT OR REPLACE&#8221; statement so that you don&#8217;t have to determine if you are dealing with a new or existing employee before persisting it.</p>
<pre class="brush: jscript; title: ; notranslate">
applyChanges: function(employees, callback) {
    this.db.transaction(
        function(tx) {
            var l = employees.length;
            var sql =
                &quot;INSERT OR REPLACE INTO employee (id, firstName, lastName, title, officePhone, deleted, lastModified) &quot; +
                &quot;VALUES (?, ?, ?, ?, ?, ?, ?)&quot;;
            var e;
            for (var i = 0; i &lt; l; i++) {
                e = employees[i];
                var params = [e.id, e.firstName, e.lastName, e.title, e.officePhone, e.deleted, e.lastModified];
                tx.executeSql(sql, params);
            }
        },
        this.txErrorHandler,
        function(tx) {
            callback();
        }
    );
}
</pre>
<h4>Synchronization Logic</h4>
<p>With these server and client APIs in place, you can choreograph a data synchronization process as follows: </p>
<pre class="brush: jscript; title: ; notranslate">
sync: function(syncURL, callback) {

    var self = this;
    this.getLastSync(function(lastSync){
        self.getChanges(syncURL, lastSync,
            function (changes) {
                self.applyChanges(changes, callback);
            }
        );
    });

}
</pre>
<h4>Final Notes</h4>
<ul>
<li>This solution currently supports unidirectional (server to client) data synchronization. It could easily be expanded to support bidirectional synchronization.</li>
<li>This solution currently implements &#8220;logical deletes&#8221;: items are not physically deleted from the table, but the value of their &#8220;deleted&#8221; column is set to true.</li>
<li>As mentioned above, you could replace the Web SQL implementation with another data access strategy. For example, take a look at <a href="http://brian.io/lawnchair/">Brian Leroux&#8217; Lawnchair</a> for another local persistence solution.</li>
</ul>
<h4>Source Code</h4>
<p>The source code is available in <a href="https://github.com/ccoenraets/offline-sync">this GitHub repository</a>.</p>

	
<!-- Start WP Socializer Plugin - Retweet Button -->
<a href="http://twitter.com/?status=RT%20@%20Simple%20Offline%20Data%20Synchronization%20for%20Mobile%20Web%20and%20PhoneGap%20Applications%20http://coenraets.org/blog/?p=3652" >Retweet this</a>
<!-- End WP Socializer Plugin - Retweet Button -->

	
	
<!-- Start WP Socializer Plugin - Facebook Button -->
<a href="https://www.facebook.com/sharer.php?u=http://coenraets.org/blog/2012/05/simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications/" >Share on Facebook</a>
<!-- End WP Socializer Plugin - Facebook Button -->



Follow @ccoenraets
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2012/05/simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe LiveCycle ES3 (version 10.0) Download</title>
		<link>http://feedproxy.google.com/~r/blogspot/NUcQv/~3/tGWmInn5nOs/adobe-livecycle-es3-version-100.html</link>
		<comments>http://feedproxy.google.com/~r/blogspot/NUcQv/~3/tGWmInn5nOs/adobe-livecycle-es3-version-100.html#comments</comments>
		<pubDate>Wed, 16 May 2012 13:25:00 +0000</pubDate>
		<dc:creator>Duane Nickull</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[


Adobe has recently announced that Adobe LiveCycle ES3
 is available as a download. &#160;This announcement was met with some great 
enthusiasm by the community, none less than us here at Technoracle. &#160;The 
brand itself had been subject of much ...]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/YMQhyQt34VzBNulIT1TJOC72t8E/0/da"><img src="http://feedads.g.doubleclick.net/~a/YMQhyQt34VzBNulIT1TJOC72t8E/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YMQhyQt34VzBNulIT1TJOC72t8E/1/da"><img src="http://feedads.g.doubleclick.net/~a/YMQhyQt34VzBNulIT1TJOC72t8E/1/di" border="0" ismap="true"></img></a></p><div dir="ltr" style="text-align: left;" trbidi="on">
Adobe has recently announced that <strong>Adobe LiveCycle ES3</strong>
 is available as a download. &nbsp;This announcement was met with some great 
enthusiasm by the community, none less than us here at Technoracle. &nbsp;The 
brand itself had been subject of much speculation regarding it’s future 
and we are happy to see the investment into LiveCycle continue. &nbsp;This 
re-invigorates our own investment to work with this excellent SOA 
platform.<br />
<br />

Having now been accepted into the Adobe&nbsp;Enterprise Solution Partner 
Program, we are extremely excited to be amongst the first in the world 
to offer you, the customers, the ability to purchase Adobe LiveCycle ES3
 and professional services around it, starting from initial project 
consulting to complete project management. &nbsp;In case you haven’t heard, 
there are several new features that many enterprises have asked for. &nbsp; 
Our great former colleagues Jeff Stanier and Dave Welch have done a 
spectacular job of making this release a “must have”.<br />
<br />

LiveCycle ES3 first and foremost incorporates the Data Services ES3 
module (version 4.6.1), an optimized Java server framework that can 
enhance and simplify the development of rich, data-intensive enterprise 
and mobile applications. &nbsp;This includes several mobile platforms such as
 iOS, Android etc.<br />
<br />

ES3 also offers a new SAP to Java connector for creating front-end 
interfaces to SAP systems. Alongside this update are connectors for 
FileNet 5 and easier SharePoint server farm deployment and integration.<br />
<br />

Our favorite new feature is within LiveCycle Designer. &nbsp;When you add a
 new submit button, Designer allows you to select an encryption method 
and choose from from several XML encryption/decryption algorithms. &nbsp; 
This will help with many accounts we are currently working on.<br />

Out mobile MEAP-lite platform is also a good way to add custom mobile
 functionality for wireless device integration into business process.&nbsp; Companies like Uberity have already released a great free and open source mobile SMS module 
including the full source code and binaries at&nbsp;<a href="http://blog.uberity.com/2012/02/extending-adobe-livecycle-es-to-use-sms-in-business-processes/"  title="Uberity LiveCycle ES3 SMS Module">http://blog.uberity.com/2012/02/extending-adobe-livecycle-es-to-use-sms-in-business-processes/<br /></a><br />

So why wait? &nbsp;Get started today. &nbsp; Contact us, a company founded
 by former top LiveCycle ES rock stars and engineering managers.&nbsp; 
Leave a omment if you wish to inquire about our services around LiveCycle ES3.<br />

<br />

</div><div class="blogger-post-footer">Original post at <a href="http://technoracle.blogspot.com">http://technoracle.blogspot.com</a><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17460203-8541400913141908329?l=technoracle.blogspot.com' alt='' /></div><img src="http://feeds.feedburner.com/~r/blogspot/NUcQv/~4/tGWmInn5nOs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technoracle.blogspot.com/feeds/8541400913141908329/comments/default</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New tutorial on creating object pools in AS3</title>
		<link>http://www.leebrimelow.com/?p=3332</link>
		<comments>http://www.leebrimelow.com/?p=3332#comments</comments>
		<pubDate>Wed, 16 May 2012 01:42:39 +0000</pubDate>
		<dc:creator>Lee Brimelow</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://www.leebrimelow.com/?p=3332</guid>
		<description><![CDATA[I just uploaded a new tutorial that shows you how to create and use object pools in AS3. In the example I am using Starling but the concepts carry over to any other framework or just the traditional display list. This concept is vital to get good perfo...]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://gotoandlearn.com/thumbs/objectpool.gif" style="border:1px solid black;margin-top:5px;padding:0;" class="alignleft" width="125" height="90" />I just <a href="http://www.gotoandlearn.com/play.php?id=160">uploaded a new tutorial</a> that shows you how to create and use object pools in AS3. In the example I am using Starling but the concepts carry over to any other framework or just the traditional display list. This concept is vital to get good performance for your games on mobile.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leebrimelow.com/?feed=rss2&#038;p=3332</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neo4J Tutorial #4: Registering a shutdown hook</title>
		<link>http://feedproxy.google.com/~r/blogspot/NUcQv/~3/Qr1YC182UF8/neo4j-tutorial-4-registering-shutdown.html</link>
		<comments>http://feedproxy.google.com/~r/blogspot/NUcQv/~3/Qr1YC182UF8/neo4j-tutorial-4-registering-shutdown.html#comments</comments>
		<pubDate>Tue, 15 May 2012 20:43:00 +0000</pubDate>
		<dc:creator>Duane Nickull</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[


In the previous tutorials on Neo4J, we discussed what Neo4J is, how to start it and use Cypher for basic queries and getting started with Neo4J and Java. &#160;In the third of these, we had hinted there are some things you should do that are best pr...]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/eq07MMemfxrPoT-mmXDMva_Zwbs/0/da"><img src="http://feedads.g.doubleclick.net/~a/eq07MMemfxrPoT-mmXDMva_Zwbs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/eq07MMemfxrPoT-mmXDMva_Zwbs/1/da"><img src="http://feedads.g.doubleclick.net/~a/eq07MMemfxrPoT-mmXDMva_Zwbs/1/di" border="0" ismap="true"></img></a></p><div dir="ltr" style="text-align: left;" trbidi="on">
In the previous tutorials on Neo4J, we discussed what Neo4J is, how to start it and use Cypher for basic queries and <a href="http://technoracle.blogspot.ca/2012/05/third-neo4j-tutorial-getting-started.html">getting started with Neo4J and Java</a>. &nbsp;In the third of these, we had hinted there are some things you should do that are best practices in a proper environment.<br />
<br />
To start this tutorial, please first follow the 3rd of the series from&nbsp;<a href="http://technoracle.blogspot.ca/2012/05/third-neo4j-tutorial-getting-started.html">http://technoracle.blogspot.ca/2012/05/third-neo4j-tutorial-getting-started.html</a><br />
<br />
You' notice that on Neo4J's pages, they discuss a shutdown hook. &nbsp;So what exactly is that and why would anyone use it?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-4-egzaeAW7o/T7K3McyVXKI/AAAAAAAABSs/nPRFcXnAZWg/s1600/Screen+Shot+2012-05-15+at+1.05.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="98" src="http://3.bp.blogspot.com/-4-egzaeAW7o/T7K3McyVXKI/AAAAAAAABSs/nPRFcXnAZWg/s400/Screen+Shot+2012-05-15+at+1.05.15+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
If you examine the code on the previous tutorial, you will see that you can shutdown a database by simply calling grapDB,shutdown(); &nbsp;These lines of code are shown above. &nbsp;Note that calling shutown() only tries to shutdown the database. &nbsp;The Shutdown hook simply ensures that the database shuts down cleanly.<br />
<br />
To add a shutdown hook to the code in the previous tutorial, navigate to the createDB() method and register a shutdownhook handler right under the line where you create the database. &nbsp;With the new line added, your code should look like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-LcGhiSDrQXU/T7K4iQnCF8I/AAAAAAAABS0/puiRuuks014/s1600/Screen+Shot+2012-05-15+at+1.11.26+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="51" src="http://2.bp.blogspot.com/-LcGhiSDrQXU/T7K4iQnCF8I/AAAAAAAABS0/puiRuuks014/s400/Screen+Shot+2012-05-15+at+1.11.26+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
At this time, you may notice red X's as this introduces errors into the project. &nbsp;We have registered a shutdown hook which takes a single argument of &nbsp;the graphDB instance it will register the hook for. &nbsp;Now it is time to write the hook. &nbsp;</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-CJZ1MFrp2Nc/T7K_pevv7MI/AAAAAAAABTI/ewtUvms--O0/s1600/Screen+Shot+2012-05-15+at+1.41.42+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="http://4.bp.blogspot.com/-CJZ1MFrp2Nc/T7K_pevv7MI/AAAAAAAABTI/ewtUvms--O0/s400/Screen+Shot+2012-05-15+at+1.41.42+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
registerShutdownHook() is a static method that returns nothing (void). &nbsp;The syntax above is a bit confusing given line 91 calls addShutDownHook on a new thread and closes around line 99, hence the erroneous looking but much required "});" syntax. &nbsp;This essentially encapsulates the functionality. &nbsp;<span class="s1">&nbsp; The&nbsp;</span>shutdown hook ensures that the Neo4j instance shuts&nbsp;down nicely when the VM exits (even if you "Ctrl-C" the&nbsp;running instance before it has finished running. &nbsp;Try running this example now with the modifications and you should see the following print out in your console.<br />
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-5LwPPy-Ty_A/T7K_4hP9hCI/AAAAAAAABTQ/hq21dEtzVyI/s1600/Screen+Shot+2012-05-15+at+1.42.53+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="96" src="http://3.bp.blogspot.com/-5LwPPy-Ty_A/T7K_4hP9hCI/AAAAAAAABTQ/hq21dEtzVyI/s400/Screen+Shot+2012-05-15+at+1.42.53+PM.png" width="400" /></a></div>
<div class="p1">
<br /></div>
<br />
<br />
<br /></div><div class="blogger-post-footer">Original post at <a href="http://technoracle.blogspot.com">http://technoracle.blogspot.com</a><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17460203-2463108920743220978?l=technoracle.blogspot.com' alt='' /></div><img src="http://feeds.feedburner.com/~r/blogspot/NUcQv/~4/Qr1YC182UF8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technoracle.blogspot.com/feeds/2463108920743220978/comments/default</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>GreenSock tweening comes to JavaScript</title>
		<link>http://www.leebrimelow.com/?p=3325</link>
		<comments>http://www.leebrimelow.com/?p=3325#comments</comments>
		<pubDate>Tue, 15 May 2012 18:02:11 +0000</pubDate>
		<dc:creator>Lee Brimelow</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://www.leebrimelow.com/?p=3325</guid>
		<description><![CDATA[Great news for those who are looking to get into JS animation. GreenSock, the creator of excellent libraries like TweenLite and TweenMax, has just released their new animation platform and it includes support for both Flash and HTML5. By the looks of the API, it makes animating DOM elements and CSS properties a breeze and [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://www.greensock.com/_img/icon-compatible-w.jpg" class="alignleft" width="118" height="124" style="margin-top:-15px;" />Great news for those who are looking to get into JS animation. <a href="http://www.greensock.com/v12/">GreenSock</a>, the creator of excellent libraries like <a href="http://www.greensock.com/tweenlite/">TweenLite</a> and <a href="http://www.greensock.com/tweenmax/">TweenMax</a>, has just released their <a href="http://www.greensock.com/v12/">new animation platform</a> and it includes support for both Flash and HTML5. By the looks of the API, it makes animating DOM elements and CSS properties a breeze and the performance looks amazing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leebrimelow.com/?feed=rss2&#038;p=3325</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion 10 Docs</title>
		<link>http://feedproxy.google.com/~r/BenForta/~3/wpTX4H-k7UE/ColdFusion-10-Docs</link>
		<comments>http://feedproxy.google.com/~r/BenForta/~3/wpTX4H-k7UE/ColdFusion-10-Docs#comments</comments>
		<pubDate>Tue, 15 May 2012 12:42:00 +0000</pubDate>
		<dc:creator>Ben Forta</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://forta.com/blog/index.cfm/2012/5/15/ColdFusion-10-Docs</guid>
		<description><![CDATA[Here are all of the links you'll need to access ColdFusion 10 documenattion and help:


ColdFusion Help and Support Page
ColdFusion
Installation
Administration
 Language referance
Development

ColdFusion Builder
Installation
Using

]]></description>
			<content:encoded><![CDATA[Here are all of the links you'll need to access ColdFusion 10 documenattion and help:

<ul>
<li><a href="http://www.adobe.com/support/coldfusion">ColdFusion Help and Support Page</a></li>
<li>ColdFusion<ul>
<li><a href="http://help.adobe.com/en_US/ColdFusion/10.0/Installing/">Installation</a></li>
<li><a href="http://help.adobe.com/en_US/ColdFusion/10.0/Admin/">Administration</a></li>
<li><a href="http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/"> Language referance</a></li>
<li><a href="http://help.adobe.com/en_US/ColdFusion/10.0/Developing/">Development</a></li>
</ul></li>
<li>ColdFusion Builder<ul>
<li><a href="http://help.adobe.com/en_US/ColdFusionBuilder/2.0/Installing/">Installation</a></li>
<li><a href="http://help.adobe.com/en_US/ColdFusionBuilder/2.0/Using/">Using</a></li>
</ul></li>
</ul><img src="http://feeds.feedburner.com/~r/BenForta/~4/wpTX4H-k7UE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://lifeasanevangelist.com/2012/05/15/coldfusion-10-docs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>ColdFusion Supports What?</title>
		<link>http://feedproxy.google.com/~r/BenForta/~3/XyQTG7gcyGY/ColdFusion-Supports-What</link>
		<comments>http://feedproxy.google.com/~r/BenForta/~3/XyQTG7gcyGY/ColdFusion-Supports-What#comments</comments>
		<pubDate>Tue, 15 May 2012 12:29:00 +0000</pubDate>
		<dc:creator>Ben Forta</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://forta.com/blog/index.cfm/2012/5/15/ColdFusion-Supports-What</guid>
		<description><![CDATA[Yep, I did indeed say that ColdFusion already supports HTML6 :-)

]]></description>
			<content:encoded><![CDATA[Yep, I did indeed say that ColdFusion already supports HTML6 :-)

<iframe title="AdobeTV Video Player" width="515" height="296" src="http://tv.adobe.com/embed/990/13786/" frameborder="0" allowfullscreen scrolling="no"></iframe><img src="http://feeds.feedburner.com/~r/BenForta/~4/XyQTG7gcyGY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://lifeasanevangelist.com/2012/05/15/coldfusion-supports-what/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>ColdFusion 10 Released</title>
		<link>http://feedproxy.google.com/~r/BenForta/~3/TzJJ1TV0nTE/ColdFusion-10-Released</link>
		<comments>http://feedproxy.google.com/~r/BenForta/~3/TzJJ1TV0nTE/ColdFusion-10-Released#comments</comments>
		<pubDate>Tue, 15 May 2012 11:14:00 +0000</pubDate>
		<dc:creator>Ben Forta</dc:creator>
				<category><![CDATA[blogs]]></category>

		<guid isPermaLink="false">http://forta.com/blog/index.cfm/2012/5/15/ColdFusion-10-Released</guid>
		<description><![CDATA[Title says it all, go grab it!]]></description>
			<content:encoded><![CDATA[<img src="http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/images/shared/product-totems/80x80/totem-coldfusion-10-80x80.png" height="80" width="80" align="left">Title says it all, <a href="http://www.adobe.com/products/coldfusion-family.html">go grab it</a>!<img src="http://feeds.feedburner.com/~r/BenForta/~4/TzJJ1TV0nTE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://lifeasanevangelist.com/2012/05/15/coldfusion-10-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
	</channel>
</rss>

