Drunk on Software #23 “I’d give it a 4.5 out of 10”

In Episode 23 we chat with Adam Flater and Rob Rusher about some very controversial topics. Adam points out James’ wishful thinking when we discuss what defines something being a “Flex application”. Jon gets the award for best quote of the episode when we discuss Flex and its community. Things get fun as we discuss Silverlight and Flex differences. As we wrap up Jon rates the wonderful scotch we were drinking an 8 out of 10.

.Net Rocks! Podcast from CodeMash 2009 RIA Panel

At CodeMash 2009 I was able to participate in a panel discussion about Rich Internet Applications, Flex, Silverlight, and Ajax. The panel was moderated by Richard and Carl from the .NET Rocks! podcast. Also on the panel was Josh Holmes and Jesse Liberty from Microsoft and Leon Gersing. It was a fun panel – especially since we enjoyed some fine whiskey during it! But also because it’s great to see how we all have common goals – we all want software to be better no matter what the underlying technology is.

In case you weren’t at CodeMash you can listen to the recording from .Net Rocks! and then let me know what you think.

Architecture of RIA from JAOO

At the JAOO conference in Aarhus, Denmark I was able to co-present with Josh Holmes from Microsoft about the Architecture of RIA. This presentation was technology agnostic so we didn’t talk about specific implementations using platforms like Flex / Flash or Silverlight. Josh has posted the presentation slides and detailed notes on his blog:

Architecture of RIA

Check it out and let us know what you think.

My Adobe MAX 2008 Talk

It’s hard to believe that Adobe MAX 2008 in the US is only 4 months away! It’s going to be another great MAX and I really hope that you can make it. This year I have one session:

Working with Data in Flex
Explore various methods for accessing data in applications built with Flex 3. We’ll discuss how to connect with back ends such as ColdFusion, PHP, .NET, and Java using REST and XML, Web Services, Remoting, Messaging, and the LiveCycle Data Management Service. We’ll also discuss underlying formats such as XML and how to manipulate it using E4X, AMF3, and JSON.

The session list is now online. So check it out and go register today!

Upcoming Events: CodeMash, RIA Jam, Flex-TurboGears Jam

It’s hard to believe that 2007 is almost over. It’s been an amazing year! Thanks for reading and contributing. I’m looking forward to another great year in 2008. And it all begins when I hit the road the second week of January for CodeMash 2008. I went to CodeMash last year and really enjoyed the conference, especially the water slides. :) I’ll be speaking again at CodeMash 2008 about Adobe AIR and Flex.

The week following CodeMash there will be a RIA Jam in Ann Arbor. The RIA Jam will be hosted by SRT Solutions and Bruce Eckel. My friend and co-RIA-conspirator, Josh Holmes, will also be there helping people learn Silverlight while I help people learn Flex and AIR. In February Bruce will also be hosting another Flex Jam in Crested Butte, Colorado. The Jam in February will cover Flex, TurboGears, integrating the two and hopefully some exploratory work into integrating Flex with Lift, the new Scala based web framework. I will be there helping people learn Flex and undoubtedly learning some new things myself.

The Jam and Open Spaces style events that Bruce hosts are my favorite events of the year. The events in Crested Butte are always so refreshing. While most conferences keep me indoors for days at a time, Bruce’s event encourage attendees to get outside, into open spaces. For me this helps to relax my mind which makes it much easier to learn and focus. At the Crested Butte events in the summer we hike for a few hours every day and in the winter we ski / snowshoe. These events are also incredibly affordable since there isn’t a high cost associated with putting them on. And as a bonus attendees to the Jams will receive a free copy of Flex Builder 2. If you are learning Flex, no matter what level, you will learn more in these few days than you will at any other conference. They are hands-on events so you actually learn through experimentation and peer interaction.

I’ll be at many other events in 2008 and hope to see many of you somewhere along the way. Until then have a happy and safe holiday season.

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.


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.


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.


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.


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 3 and Silverlight

InfoQ recently published an interview with me about Flex 3 and Silverlight. In the interview I talked about what I see are some of the differences between Flex and Silverlight. After reading my words again I realized that they may come across as critical of Silverlight. I don’t at all intend them to be taken that way. Silverlight is helping to bring the idea of richer and better user interfaces to the masses. This vision is something I believe in and I’m glad that Microsoft and Sun (with JavaFX) have all now embraced the RIA vision and are making significant investments to make it reality. Silverlight and JavaFX, have validated the programming and deployment models which Flex uses. The combination of things like a declarative language, a procedural language, cross-platform bytecode, a high performance VM, vector graphics, and a web browser plugin have been the foundation of Flex based RIAs since 2004. Silverlight and JavaFX have validated that this is the best way to build a successful RIA platform. So please don’t read my comments on Silverlight and JavaFX as being critical. I’m excited that Microsoft and Sun now believe in the RIA vision. But I’m also glad that I get to evangelize the RIA solution which is proven and available today.