Adobe MAX 2011 Was Good Despite The Keynotes

Just came back from LA, where I spent three days at MAX – the main Adobe conference. Four people from our company were there and all liked it. I went there to see if the company is still strong,  has a clear road map that, hopefully, matches  my understanding of where IT population is moving. Adobe does seem strong despise the bleak keynotes. I mean, the special effects were fine, the screen was huge, the projection software was pushing three million pixels a second to the monitors with showing ballet dancer and iPads running Adobe’s software.

Our seats were shaken from the bass as hard as if we were in IMAX during the Inception movie. But almost six thousand people have gathered in the Nokia not just to see a nice stage backdrop. The Adobe actors didn’t deliver good performance – the keynotes were not well prepared. Traditionally, Kevin Lynch runs the day one (the CEO prefers hiding away during MAX) and Ben Forta was the day two host.  As opposed to last year, I had a feeling that both of them were asked to host the keynotes just a couple of days before the conference, and didn’t have time to prepare.

In the past, the first day’s keynote was for both designers and developers and the second was more of a community show. It seems that Adobe quietly realized that bringing desinopers and devigners in the same boat is utopia even with Flash Catalyst. Below is a photo of the devigner’s leg with Adobe’s goody bag.

The first day was for designers and the consumers. Adobe joins the rest of IT world that hangs out in the cloud these days. Now you can subscribe to the Creative Cloud Platform and publish your own magazines (MAX attendees were promised a free year subscribtion). Adobe’s cloud is targeted not only for developers, but for consumers as well. Create photo albums like with Google’s Picasa. The difference is that there is no need to manually synchronize the photos between multiple devices. If you managed to put the photos on your notebook, they are automatically shown on your iPad. This app is called Carousel.  Work with Photoshop right on your tablet (carrying stylus is back in style). Create custom themes with Kuler or collages with Collage. Proto is for creating the prototypes of Web pages on tablets. Debut allows to access your Photoshop and Illustrator’s design from anywhere using tablets…

During the first day keynote, I had a feeling that Adobe spent this year creating applications primarily for iPad. Kevyn Lynch kept repeating the word iPad dozens of times. But after attending the demos of all these consumer-oriented applications, I realized that most of them will be released on Android first and only after on iOS. Most of them (except the Carousel) were developed in Adobe AIR. In other words, Adobe eats their own dog food.

I’d like to see more technical evangelists on the main stage during the keynotes.  They are developers’ rock stars. They’ve traveled day in and day out around the world spreading the word about the latest and greatest Adobe’s products.  They deserve to be treated as the first class citizens. This was happening in the past, but not any longer. Director of Evangelism Ben Forta was the only evangelist on stage (Ben used to evangelize ColdFusion, which wasn’t even mentioned once during the keynotes). Unfortunately, during the last year Adobe lost a number of really good technical evangelists to other employers.

After the keynotes, I’ve attended a number of technical sessions, which somewhat corrected the situation. Most of the sessions were of good technical level.

These are some important news for Flex/AIR developers:

  1. AIR Captive Runtime means that your application will not depend any longer on the availability of the AIR runtime on the platform you’re deploying to. The runtime becomes a part of your application. This started as a workaround to the strict policies for the deployment on iOS devices, but now it works the same on other platforms too. This will increase the size of your application by 6-8MB, which is not bad. For Java developers I can add that Oracle plans to do the same thing (in 2013) with the future versions of JavaFX applications – a small JVM inside the application.
  2. The next major release of Flash Player will support multi-threading. Developers will be able to start their ActionScript in a  background thread that will have access to the display object. Threads won’t share any resources hence developers don’t need to worry about race conditions. The new class Promise will allow to start a thread asynchronously and receive a result of its execution some time later. It seems to be the similar to Java’s Future class.
  3. Enroll in this pre-release program to know more.

  4. Flex Builder 4.6 should have serious improvements in the compilation speed.  Get on the pre-release program to get it now.
  5. AIR native extensions become handy to all mobile developers who want to use the mobile underlying OS sooner than AIR will come up with the wrapper classes encapsulating the same functionality. Our company has released beta of ClearDS that will compliment native extensions in Android.


The highlights of the conference were  traditional Sneaks, where Adobe showed exciting experiments that may make it into the future products. Let me tell you, they have some bad ass engineers and mad scientists! Adobe has posted all videos from Sneaks. Rainn Wilson from The Office hosted the Sneaks, and let me tell you – he did a great job!

The second evening ended with an excellent party called MAX Bash. The organization of this event was perfect. Ravioli with wild mushrooms were yummy. And then, Weezer came on stage. They kicked some asses big time!   It’s the rock band of the top tier, and it shows! “If you want to destroy my sweater…” –  you know who they are. My older son went to eleven of their shows already.  Even if Adobe wouldn’t have introduced multiple thread in Flash Player, I’d forgive them just for bringing Weezer to the conference. Jeff Houser was standing in the crowd, recorded the music and published it here. Love his tweet: “Whoever that screaming girl was on stage left at Weezer Max Bash; you screech and sing all over my recording.” That girl had a great time, really.

One more credit to Adobe – they start publishing Max technical session right after the event ended. The developer track’s sessions are here. Enjoy! This year Adobe MAX and JavaOne conferences where hosted at the same time, and I couldn’t be at two places at the same time, but some of the JavaOne presentations are posted at – look for the JavaOne 2011 channel there.

Overall, it was informative and fun event. The future of Flex is solid. We can stay where we are.


How Many Frameworks Does It Take To Retrieve Orders?

I don’t like most of the Flex MVC frameworks cause they force me to write more code. I do like frameworks and tools that let me write less code. But there is no free lunch and, at some point, even productive frameworks, tools, and libraries reach critical mass and the finger pointing game begins.

Today, I’ve been working on an application that was supposed to display a list of orders form a relational DBMS. Not a rocket science. But let’s go over the languages, libraries, tools, and frameworks I had to use for this.

First, I wrote a 20-lines SQL Union statement and tested it in Oracle’s SQL Developer. Then I generated 80% of the code and wrote the other 20% manually. Here’s what I was using:

1. Eclipse IDE for Java EE Developers (Eclipse Foundation), which comes with the WTP plugin

2. CRUD code generator Clear Data Builder (Farata Systems). It generated the initial application written in Java, ActionScript, MXML. It also generated ANT build script

3. Configured Apache Tomcat (Apache Foundation) to run from inside Eclipse – this is where my rich Internet application is deployed.

4. Added to the project the libraries of MyBatis (Clinton Begin and Apache Foundation). This is a light-weight data mapping framework. You map manually written SQL to a Java DTO, which eliminates the need to write JDBC.

5. Spring Framework (Spring Source) was used to simplify wiring of MyBatis into my Java applications.

6. BlazeDS framework (Adobe) is being used for efficient serialization of the server-side Java into client-side ActionScript objects and back via AMF protocol. This exchange happens between the peer ActionScript/Java DTOs.

7. The ActionScript DTOs where automatically generated based on their Java peers by the DTO2FX tool (Farata Systems)

8. Most of the Java code was generated, but I had to write small fragments to be called for data manipulations via SQL/MyBatis

9. The latter would engage the Oracle driver and DBMS (Oracle)

Everything’s ready. Start the server, run the Flex app, and…instead of data I’m getting this error: ” org.springframework.jdbc.ArchiveSQLException : Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: Invalid column type”.

This error message is misleading. I do insert parameters to the SQL Select, but they are not nulls. I don’t insert anything into the database. The worst part is that there is nothing left to debug. Everything up to the last SQL-annotated Java method declaration works fine. But you can’t debug a method signature, can you? Who is to blame? Oracle driver? Or should I get the source code of MyBatis trying to find the line of the code that blows up?

Enough for today. Going home. I don’t know what’s causing this issue, but I’ll find the solution. The only question is how much time I’m going to spend on it. Do all these productivity frameworks and tools really save time in the long run? Would I be better off writing JDBC code manually? AS a matter of fact I like MyBatis a lot better than Hibernate, but still… Where are the time savings?