Upcoming Conference Presentations: GeoWeb, OSCON, and LinuxWorld

Over the next few weeks I’ll be presenting at a few conferences:

GeoWeb - Map Based RIA Development Using Adobe Flex and AIR with Duane Nickull

OSCON - Flex: the Open Source SDK for RIAs also with Duane

LinuxWorld - Building Rich Internet Applications with an Open Source Stack

I hope to see some of you at those conferences.

The RIA Puzzle: Shaping the Future of the Internet with Adobe Platform Technologies

Recently I did an interview with Anthony Franco, President of EffectiveUI, about Flex, Adobe AIR, and Rich Internet Applications. Check it out and let me know what you think.

This Week: Europe JUG Tour and SAP / Adobe Nanoconference

The last few weeks my wife and I have been tromping around the Alps (and we climbed Mont Blanc!) Now it’s time to get back to work. This week I’m visiting a few Java User Groups to talk about the usual topics: Adobe AIR and Flex

Here is the schedule:
July 7 - Zurich Java User Group
July 8 - Paris Java User Group
July 9 - Amsterdam NLJUG
July 10 - Warsaw JUG
July 11 - London Java Meetup Group

Also on July 11 I will be at the Adobe RedMonk SAP Enterprisey Nanoconference with James Governor of RedMonk.

Hope to see you somewhere along the way!

Need a QuickFix? Try Google App Engine, Adobe AIR, and Flex

Last week I spent a few hours with Dick Wall of the Java Posse working on an application which combines Google App Engine, Adobe AIR, and Flex. This was a fun experiment that turned into a pretty cool application. The application, named QuickFix, sends an image to Google App Engine which does an “I’m Feeling Lucky” transformation on the image and sends it back. Here’s a screenshot of it fixing one of the photos I took at the Java Posse Roundup this past winter:

You can get the application by going to:
http://airquickfix.appspot.com/

All of the source code can be found in the air-quick-fix project on Google Code.

The division of work between Dick and I worked really well. Dick worked on the back-end code in Python while I worked in Flex on the front-end. We used PyAMF to connect the back-end to the front-end. PyAMF made the whole process very easy. The only challenge was in figuring out how to transform the data types correctly. The first version of the application came together in a couple of hours.

The back-end Python code is really simple. Here is the method that is called from the client (trimmed down a bit):

def fiximage(data):
 
  image_in = Image(str(data))
  image_in.im_feeling_lucky()
 
  image_out = ByteArray()
  image_out.write(image_in.execute_transforms())
 
  return image_out

In this code, the data which is passed to the method is just a ByteArray containing the image. The data is turned into an Image, the im_feeling_lucky transform is specified, then run - taking the bytes and sending them back to the client.

The front-end Flex code that sends the image to the back-end is also really simple:

The RemoteObject (AMF networking API in Flex) is defined as:

<mx:RemoteObject id="ro" destination="image" endpoint="http://airquickfix.appspot.com/image/">

The function which actually makes the request to the back-end is:

var stream:FileStream = new FileStream();
stream.open(startFile, FileMode.READ);
var imageData:ByteArray = new ByteArray();
stream.readBytes(imageData);
ro.fiximage(imageData);

In this Flex code the image file is opened, read into a ByteArray, then sent to the fiximage method on the back-end.

There is a bunch of other Flex code that creates the UI, handles selecting, saving, and dragging and dropping images but is all pretty straightforward.

Dick and I really enjoyed creating this application together. It shows off some of the strengths of each technology well and shows how easy it is to use the technologies together. Let us know what you think about the application.

Two Great Flex / Adobe AIR Articles

Just a quick note about two great articles which were recently published:

ActionScript Collections and Functional Programming by Bruce Eckel
In this article Bruce provides examples and insights into the functional pieces of ActionScript. He also covers some of the lesser known things about Collections. I learned quite a bit from this one!

InfoQ Case Study: NASDAQ Market Replay
Jon Rose worked with NASDAQ to create a great case study about using Adobe AIR, Flex, and Amazon S3.

Flex and Adobe AIR Interview from QCon SF 2007

InfoQ.com has posted an old interview I did with Jon Rose at their QCon SF 2007 conference. In this slightly dated interview I talk about the usual Flex, Adobe AIR, and RIA topics. Makes me wish I still had my beard. Gosh I was sexy. ;)

Adobe Open Source Presentation in New York Tomorrow

Tomorrow night I’ll be presenting at the New York GNU/Linux Meetup Group about Adobe Open Source - including the Adobe Flex SDK, Mozilla Tamarin, Adobe AIR (pieces like SQLite and WebKit), and BlazeDS. More details here. Hope to see you there!

Talkin’ About a Revolution

Revolutions may be enabled by technology, but they are driven by people. Adobe’s recent announcements about Flex, Flash, and Adobe AIR on Linux are the most recent technology enablers for the software revolution that is currently underway.

Usually I’m one of the first to post about Adobe’s Linux related announcements. My trip to Bangalore, India, however, made me a little late to the party this time. In case you haven’t seen the announcements, on March 31, 2008 Adobe released an alpha version of Adobe AIR on Linux and an update to the alpha version of Flex Builder 3 for Linux (which supports building AIR applications on Linux). On the same day Adobe also announced that we joined the Linux Foundation.

In a post about the announcement, JD points to one of my old blog posts, which still accurately echoes the significance of this announcement - “… for the first time EVER, nearly everyone in the world has access to a FREE, ubiquitous application runtime, and a FREE application development toolkit for that runtime! Of course I’m referring to Flash Player 9 and the free Flex 2 SDK.” Now I can update this statement “For the first time EVER, everyone in the world has access to a FREE, ubiquitous web runtime, a FREE cross-OS desktop runtime, and a FREE, open source, and mature development toolkit for those runtimes! Of course I’m referring to Flash Player 9, Adobe AIR, and the Flex 3 SDK.” This is huge. We can now build real software once and have it run on every major OS and in every major browser – and we can do it using open source tools!

Why the excitement? Haven’t we had this for years - with Java? QT? GTK? True… in theory. We’ve had the technology; but we always lacked a critical mass of people that were actually using it for wide reaching, real software. There are now countless companies - including Oracle, SAP, Salesforce.com, Intuit, E*Trade, eBay, AOL, NASDAQ, Yahoo!, and numerous startups – that are using Flex to build real software for Flash Player on the web and Adobe AIR on the desktop. This kind of software revolution is reminiscent of the transition from client-server to web applications. The movement is real. The technology is mature (even the new Adobe AIR desktop runtime consists primarily of mature, proven technologies like Flash Player, Tamarin, SQLite, and Webkit). Software is changing for the better, especially for those of us on Linux.

I now have several desktop applications installed on Linux - such as the eBay Desktop - which I would never have had before AIR worked on Linux. Most companies simply do not invest time and money building or porting their software for such a small customer base. With AIR it doesn’t matter. Companies build the software once and it works on the web, on the desktop, on Windows, on Mac, on Linux. This is a software revolution not because the technology exists, but because people - lots of people - are actually using it.

Today we call the products of this software revolution “Rich Internet Applications”. In ten years it’ll just be “software”.

Video: Building Turbulent AIR Applications on Linux

Adobe recently released an alpha version of Adobe AIR for Linux and a updated alpha 3 version of Flex Builder for Linux. I wanted to show everyone how easy it is to build and run desktop RIAs with Flex and Adobe AIR so I recorded a quick video. In the video I use Papervision3D and a component I created called “TurbulentApplication” to turn an ordinary AIR Application into an application which pitches and rolls in response to the accelerometer values on my Ubuntu laptop. While most AIR applications work on Windows, Mac, and Linux, this one only works on Linux because as far as I know Windows and Mac don’t have a way to read the accelerometer values from a file, like Linux. If you have Linux (and an accelerometer) and want to run the application you can download it here. If you want to download the source code for the TurbulentApplication component, you can get it here.

Check out the video (and let me know what you think!):