My Dreamforce Keynote Demos

At Salesforce.com’s 2007 developer conference, called Dreamforce, I did a few minutes of demos during the day two keynote with Marc Benioff and Bruce Chizen. I showed three real applications built with Flex, Adobe AIR, and Salesforce.com. It was a fun experience and I only had a few minor demo glitches. Thanks to PodTech the video is below. My demos are about four minutes in.

FREE RIA Developer Camp - Nov 5 in San Francisco - Sign up now!

I’ll be presenting at the RIA Developer Camp on Nov 5th in San Francisco with Christophe Coenraets. Go sign up now before it’s full!

Building an Adobe AIR application on salesforce.com with Flex 3

One of my old blogs has been turned into a full article on the Adobe Developer Connection and updated for Flex 3 Beta 2 & Adobe AIR Beta 2:
Building an Adobe AIR application on salesforce.com with Flex 3

Also a recording of the session that I hosted at Dreamforce has been posted on the Apex Developer Network:
Make Your App *Bling*: Build Amazing Salesforce Apps Using Adobe Tech. (click on “Apex & Beyond” then scroll down to the session)

Lastly, in the next few weeks we will be releasing an update to the Flex Toolkit for Apex which adds simple local caching for AIR applications. More information as soon as we finishing implementing the basic CRUD functions.

What is a Rich Internet Application?

The more software experiences become like the natural world the more users are pleased with those experiences. One of the most powerful, understandable, and universal concepts in computing is the idea of a desktop containing files and folders. Users embraced this metaphor in their software because it modeled their natural world experience.

There is a paradigm shift underway. In this shift, developers are creating user interfaces which more closely model the natural world. Since 2002, the term used to describe these types of software applications is “Rich Internet Applications”, or RIAs. Technologies like Ajax, Flex, Silverlight, Adobe AIR, and JavaFX are growing in popularity as this shift to RIAs gains momentum.

But what is an RIA? Answering that question is like trying to answer “What is a tree?” You may be able to identify an RIA or a tree with certainty when you see one, but coming up with an exact definition can be very difficult. In cases like this, the best one can do is to identify some of the fundamental characteristics that the term encompasses.

When you break down the phrase “Rich Internet Applications”, you find that “Internet” and “Applications” are well understood. It’s the “Rich” aspect that makes RIAs interesting, and it’s the “Rich” aspect that requires a fuller explanation. Essentially, a Rich Internet Application is capable of delivering a rich experience to the user. It is the richness of the experience that is often enhanced by making software that is more natural – more connected, more alive, more interactive, and more responsive.

Connected

We are all connected. On this relatively small planet we all have many things in common. We communicate with one another via many different methods, in many different languages, sometimes easily and sometimes with difficulty. Likewise RIAs are built on a network that connects us all - the Internet. RIAs use this network of billions of connected pieces to help us communicate - between each other and between systems, sometimes easily and sometimes with difficulty. And like each of us, in some scenarios RIAs need to be able to work when disconnected from the Internet.

Alive

Movement and the passing of time are critical to our experience of beauty and the emotional reaction we have to it. Watching waves continuously crash on a beach is an experience which fills us with life. Similarly, we would not sit and watch a beautiful sunset for very long if it never changed. In RIAs, we create rich experiences by modeling the movement and beauty we find in the natural world. Smooth sliding transitions, zoom effects, soft blurs, drop shadows, and rounded corners are elements of RIAs which help make software feel more like the natural world. Beauty is often simple and never overdone. Software that feels more alive evokes an emotional response from us. That emotional response can help to improve our overall satisfaction with the software. RIAs should feel alive.

Interactive

When people communicate they interact — sometimes physically, sometimes audibly, and sometimes visually. Interaction is how we transmit and receive information. The richness of an experience is heavily dependent on this interaction made possible by our senses. RIAs facilitate physical, audible, and visual interaction. Many new devices are allowing for more natural methods of physical interaction. Multi-touch interfaces like tablet PCs and media players are becoming more common because users want to interact with software like they interact with objects in the natural world. Many more software applications are also adding video and audio capabilities, and some of these applications support bi-directional multimedia interaction. This allows users to interact visually and audibly in the context of an application. Imagine filling out a form online and, if needed, being able to interact via webcams with someone who can help you complete the form. Applications which embrace interactivity to that level are helping to bring natural world interactivity to software experiences.

Responsive

In the real world when people interact with each other or with objects like rocks and trees, those things typically respond quickly. If I kick a rock it immediately moves, unless it’s a big rock in which case my foot immediately hurts. If someone speaks to another person they expect a timely response. At a baseball game, you can see scores whenever you want, just by looking in the right place. Too often in the world of software people are forced to wait for their computers to respond. Whether due to network connectivity issues, processing limitations, or other problems, software too often makes us wait. Most web applications leave users waiting for at least four seconds every time the user clicks on something. With many applications the wait times can be significantly longer, even on a broadband connection. Imagine what an everyday conversation would be like with that latency. Real-time streaming, high performance client side virtual machines, and local caching mechanisms are becoming in integral part of RIAs because these technologies reduce latency, increase responsiveness, and make software feel more like the natural world.

Natural Software Experiences

All kinds of software applications — from ERP business applications to word processing applications — are embracing the characteristics of what we now call Rich Internet Applications. This move is happening because users intuitively want to experience software like they experience the natural world.

Rich Internet Applications are proliferating because they are more connected, alive, interactive, and responsive than yesterday’s software. In ten years nearly all software will be what today is called a Rich Internet Application. But in ten years it will be only natural to just call it “software”.

Flex Builder for Linux!!!

I love vi. I’ve been doing Flex development on Linux for about three years - mostly with vi. But to be honest when building complex applications it is nice to have things like code hinting and integrated debugging. I’m sure you *could* make vi do that with Flex but I am not brave enough to attempt to figure that out. So I’m extremely excited that Adobe is releasing a version of Flex Builder for Linux! You can download Flex Builder for Linux from the labs.adobe.com site right now!

Having Flex Builder for Linux really empowers us Linux geeks to easily build Rich Internet Applications. Flex 2 & Flex 3 applications can run in the browser via Flash Player 9 which has been available for Linux for more than a year. To run Flex applications as Desktop applications we need the Adobe Integrated Runtime, AIR. Adobe AIR isn’t yet available for Linux. But I’ve been having pretty good success testing / debugging Flex based AIR applications on Linux over the past few weeks since I discovered that you can use Wine and adl.exe to run AIR applications on Linux.

This is great news for developers - especially developers that use Linux! But do I miss vi? I really do. I really wish there were vi key bindings in Eclipse (and there probably is but I haven’t found a project that does that yet). Go give the new Flex Builder for Linux a try and let us know how it goes! Please file bugs and feature requests on the public Flex bug database.

Flex and AIR: The New Standard for Business Application UIs

Last week I attended Dreamforce, salesforce.com’s annual developer conference. It was exciting to see all the innovation going on with business applications. Much of that innovation is centered around Flex and Adobe AIR. In fact 18 of the 32 companies in the salesforce.com incubator are using Flex and AIR! Does that give you an idea of where the momentum is for companies building business applications?

At the Dreamforce Day 2 keynote, Workday CEO Dave Duffield gave a demo of the new Flex-based interface to their ERP software. Duffield said multiple times that they have standardized on Flex as their UI platform! A while back I was in early meetings with Workday that focused on their possible use of Flex. I showed them my Census RIA Benchmark and some of the other amazing things they could do with Flex. I’m really glad they have decided to fully embrace Flex for their UI. Compared with the other technologies they were considering, I’m sure their developers and their customers will be much more pleased with their experience.

I met so many people at Dreamforce who were building RIAs with Flex, salesforce.com, and the Flex Toolkit for Apex that it was somewhat overwhelming. The toolkit, which started as one of my airplane projects, has been the catalyst for bringing together Flex and salesforce.com. Thanks to a lot of help from Seth Hodgson, Dave Carroll, Ron Hess, Adam Gross, and many others we have built a great platform for Rich Internet Business Application development - great user experiences on the front end and a solid infrastructure on the back end. It’s no wonder so many companies are building their business applications on this stellar combination of technologies.

It is hard to keep track of all the innovative business applications being built with Flex, AIR, and salesforce.com. Model Metrics, for example, is building applications that allow you to take your data offline. Their first app is targeted at pharmaceutical sales reps. It allows them to sync their salesforce.com data to a tablet or laptop, then go to a doctor’s office and record all the information about their visit. When back online they can automatically sync all that information back into salesforce.com. It’s a great app built entirely with Flex, AIR and salesforce.com. Another great application is SlideRocket. This Flex-based PowerPoint-like application hooks into salesforce.com so that you can easily send your presentations to your salesforce.com contacts and see when your contacts viewed them. DemandBase has a very nice Flex application for finding sales leads. When you purchase leads they are automatically inserted into your salesforce.com account! Check out the DemandBase application for yourself. One last company to highlight is Ribbit. Ribbit has built a great voice/phone communication application that provides services like automatic voicemail transcription - and it can live inside of salesforce.com. All of these applications show where the cutting edge is for business applications. It’s all about great user experiences with Flex and AIR - built on great infrastructure like salesforce.com.

If you are building Flex, AIR, and salesforce.com applications please let me know! You can email me at jaward <at> adobe <dot> com or just leave a comment here. Thanks!

Testing AIR Applications on Linux

*** WARNING - THIS IS TOTALLY UNSUPPORTED, UNENDORSED, AND A COMPLETE HACK ***

I tried for a while to get the actual Adobe AIR runtime installed via wine on Linux. But I wasn’t able to get it to work. Then I realized that I don’t really need the whole runtime to just test my AIR applications. All I need is ADL - the testing tool for AIR applications. So I gave it a try on a Salesforce.com project I’m working on:

jamesw@dos:~/projects/mavericks/examples/air/AccountTracker/bin$ wine ~/flex_sdk-3_b1/bin/adl.exe salesforceTest-app.xml

And to my total surprise the AIR application loaded and ran on Linux! Sweet!

Flex & Ajax Developers: 8 Days Left to Win a $100,000 Vacation

Step 1) Build a kick-a AIR application with Flex and/or Ajax
Step 2) Submit it to the AIR Developer Derby contest
Step 3) ???
Step 4) Profit!

Unfortunately I can’t participate because I’m an Adobe employee. But I wish you good luck and if you win please let me know if you need a travel companion (or 2 because we should take my wife too). :)

Pot of Gold at the Flex / AIR Jam

This week I have been in Crested Butte, Colorado at the Flex / AIR Jam. It’s been a great event for everyone. Those new to Flex have learned a ton and those with more experience have been able to extend their knowledge by working on real projects. Over the past two days I’ve made considerable progress on two different projects. One project is the new version of the Census - RIA Benchmark app. I’ll be posting the new version with GZip support and a new Laszlo test tomorrow. The other project I’ve been working on is an enterprise Flex application framework kinda like a portal. This project is named “Anvil”. The goals of Anvil are to support large Flex application deployment scenarios, illustrate best practices for application partitioning, and be a reusable open source framework for portal-like applications. I’ll be publishing more info on Anvil in the next few weeks.

Today we had a nice surprise. We were heads down coding and Bruce told us to go outside to look for a rainbow because it was sunny and raining. We walked outside to see an amazing rainbow that was brighter than any I have ever seen. A few of us decided to walk down the street to get a better view. I happened to find a nice flower pot which the rainbow seemed to end in… Like a pot of gold! I hope that many more of you will be able to find another pot of gold with us at the next Flex Jam! :)