Flex Jam February 2011 – Learn Flex in Ann Arbor

In a few weeks I’ll be in Ann Arbor, MI to lead a Flex Jam hosted by SRT Solutions. Code Jams give you the opportunity to learn by doing. So bring your laptop and come join us in Ann Arbor!

Here is the full description of the event:

Join SRT Solutions as we host James Ward, Adobe Flex evangelist, from Tuesday, February 15 through Thursday February 17 for 3 interactive days of Flex (and AIR) development and exploration. Jams, pioneered by Bruce Eckel and modeled after sessions that bring musicians together to create something new and interesting, take learning beyond the lecture/lab process. The lecture/lab learning works best for groups where everyone is at the same level. By bringing together developers of varying skill levels with a technology, the Jam process allows everyone to work at their own level.

Building Cross-Device Apps with Flex and Spring at the Detroit JUG

On February 15, 2011 I’ll be presenting at the Detroit Java User Group about Building Cross-Device Apps with Flex and Spring. If you live in the Detroit area then I hope to see you there! If not, then talk to your local Java User Group leader about having me come and speak.

Here is the abstract for the talk:

Today, users want apps in the browser, on their desktop, phone, tablet, and TV. Reusing code across all of these devices is now crucial for developers. By combining Flex for the UI with Spring and Hibernate for the back-end, developers can build apps that work on a variety of devices including PCs, Android phones / tablets, the BlackBerry PlayBook tablet, iPhones, and iPads. This session will walk developers through the steps for creating these cross-device apps with Flex and Java.

Integrating Flex/Flash with HTML5 APIs

Beyond the media hype about Flash versus HTML5 exists the reality of coexistence and cooperation. This coexistence and cooperation makes the web a better place. When developers combine the strengths of Flash with the strengths of HTML, users get the best possible experiences on the web.

Both HTML and Flash are important foundations that Adobe builds its products on. Here’s a little secret about Adobe’s business model… When new versions of those platforms come out, so do new versions of the tools for building on them. And guess what Adobe makes money on… Tools. So it is true that Adobe loves Flash AND HTML5. :)

P2P in Desktop, Mobile, and Tablet Flex Apps

Using the open source Flex SDK, developers can easily build desktop, mobile, and tablet applications that use Peer to Peer (P2P) communication. I’ve created a video that walks through demos and code illustrating how to use the P2P APIs in Adobe AIR applications. Check it out:

Grab the code for the demos in the video from github:

Just as the video shows, it’s incredibly easy to use the P2P APIs. Here is a quick walk through. First create a new NetConnection that is connected to “rtmfp:” like so:

Dreamforce 2010 and Cloudstock

I’ll be speaking at Dreamforce again this year! I have two sessions that are going to be super fun! First is a panel called “Cloud Mobility: Taking Critical Business Functions With You, Whenever, Wherever” on Wednesday at 3:15 PM. Then on Thursday at 11am I’ll be co-presenting a session on “Building Rich User Interfaces with Adobe Flash Builder for Force.com” with Markus Spohn from Salesforce.com.

Preceding Dreamforce is the Cloudstock event where you can see some other great presentations related to Flex and RIAs. Lee Brimelow will be doing a presentation on “Flex and Flash Platform on the Cloud” that is guaranteed to entertain and educate. There will also be presentations from Nigel Pegg on Real-time Apps and Keith Sutton on “Adobe’s Cloud Offerings for Developers and Enterprises”.

HTML5 Live in New York and RIA Unleashed in Boston

I’ll be speaking at two great events next week on the East Coast. First up is HTML5 Live in New York on Tuesday November 9th. At HTML5 Live I’ll be talking about “Development Tools for Building HTML5 Content & Applications”. Then on Friday November 12th I’ll be at RIA Unleashed in Boston talking about “Flex 4.5 Hero”. These two events will certainly be enlightening. :) I hope to see you there!

Tour de Mobile Flex – Now Available for Android!

Tour de Flex was launched at Adobe MAX two years ago. In that time Tour de Flex has become an essential resource for learning Flex. Now that you can build Flex apps for mobile devices with the Flex Hero prerelease we thought we should build a version of Tour de Flex for mobile devices. Using Flex Hero and AIR for Android we’ve created Tour de Mobile Flex! This is a great way to explore the capabilities of Adobe AIR and Flex on mobile devices. Get it from the Android Market by searching for “Tour de Mobile Flex”!

Install Adobe AIR on 64-bit Ubuntu 10.10

Right now Adobe AIR is only officially available for 32-bit Linux. But it does work on 64-bit Linux with the 32-bit compatibility libraries. There are several ways to install Adobe AIR on Linux. My preferred way on Ubuntu is to use the .deb package. However the .deb package distributed by Adobe can only be installed on 32-bit systems. Good news is that this can be easily fixed! To install the Adobe AIR .deb package on a 64-bit system just follow these steps:

Data Paging in Flex 4

I know — you’ve heard it from me before — AMF rocks! With AMF you can load massive amounts of data into your Flex (or JavaScript) apps very quickly. This can often obviate the need for paging data. But what if you have lots, and lots, and lots of data? Well then you should use data paging. And here is how…

There is a new collection wrapper class in Flex 4 called “AsyncListView”. The UI data controls in Flex 4 know how to handle an AsyncListView as a dataProvider. The purpose of the AsyncListView is to give you a callback when the underlying list throws an ItemPendingError. The ItemPendingError indicates that an item that the list thinks it has isn’t really there yet. This allows you to then load the data and update the list. In order to throw an ItemPendingError you need to keep track of which items haven’t been loaded and then, when an item is requested that isn’t really there, throw the ItemPendingError. Here is some code from my PagedList implementation: