Adobe MAX 2011
Adobe MAX 2011 is just around the corner. Every year I feel the same: how fast the last year has passed! I guess I have a better feeling of how the time is passing by counting the MAXs :D

Anyway let’s get back to the event itself. There are many reasons for wanting to attend Adobe MAX (learning new products and technologies, staying in touch with the latest and greatest, and networking just to name few) but if you plan to start mobile development or to learn new tricks then here is a list I put together.

Beginner
- Getting Started with ActionScript 3.0 (Lab on Monday, October 3, 2:45 p.m. – 4:15 p.m.). If you are new to Flash Platform mobile development then this lab will help you learn ActionScript 3.0 the language used for creating Flash applications including those running on mobile and tablets.
- Introduction to Flex (Lab on Monday, October 3, 2:45 p.m. – 4:15 p.m. and Tuesday, October 4, 8:00 a.m. – 9:30 a.m.). If you are new to the Flash Platform, then understanding how the open source Flex framework works will help you a lot.
- Flex Mobile Boot Camp (Lab on Monday, October 3, 2:45 p.m. – 6:45 p.m. and Tuesday, October 4, 12:30 p.m. – 4:30 p.m.). This boot camp will teach you the basics of Flex and Flash Builder mobile features.
- Developing High-Performance 2D Mobile Games with Adobe AIR (Lab on Monday, October 3, 12:45 p.m. – 2:15 p.m. and Tuesday, October 4, 3:00 p.m. – 4:30 p.m.). If gaming is your poison and you are new to our platform then this lab is for you.
Intermediate / Advanced
- Flash Professional CS5.5 for Mobile – Android and iOS (Lab on Monday, October 3, 2:45 p.m. – 4:15 p.m.).
- Building a Flex Application for Tablets (Lab on Monday, October 3, 2:45 p.m. – 4:15 p.m., Wednesday, October 5, 8:30 a.m. – 10:00 a.m., and Wednesday, October 5, 11:00 a.m. – 12:30 p.m.). In this hands-on session you will build a complete Flex app for tablets starting from scratch.
- Advanced Mobile Application Development (Lab on Monday, October 3, 5:00 p.m. – 6:30 p.m. and Wednesday, October 5, 1:30 p.m. – 3:00 p.m.). This lab is presented by the guys behind Conqu – one of the best task management apps for iOS, Android, and PlayBook built with AIR, Flex, and Flash Builder. So you will get a chance to learn from the best.
- Developing an iOS Application with Flex and Adobe AIR (Lab on Tuesday, October 4, 12:30 p.m. – 2:00 p.m., Wednesday, October 5, 1:30 p.m. – 3:00 p.m., and Wednesday, October 5, 4:00 p.m. – 5:30 p.m.).This 90-minute lab will cover how to create and simulate an iPad application in Flash Builder, and will walk you through the steps of creating and deploying IPAs onto your personal devices.”
- Deep dive into Molehill (Stage 3D) (Session on Monday, October 3, 5:00 p.m. – 6:00 p.m.). Although this feature is not yet available for mobile it will be soon. If you plan to do advanced 3D stuff then you shouldn’t miss this one.
- Flash gaming deep dive (Lab on Sunday, October 2, 9:00 a.m. – 5:00 p.m.). You will learn the ins and outs of creating games using popular game frameworks like Flixel and PushButton Engine. You’ll also discover how to use Molehill to create stunning 3D for games, and we’ll show you how to use advanced techniques such as blitting to help with performance.
- Programming a 3D First-Person Shooter Game in Flash (Session on Tuesday, October 4, 8:30 a.m. – 9:30 a.m.). Learn more about how to build the next generation of action games with the new Flash Stage 3D API. This session will cover the key steps required to create advanced first-person shooter gameplay, such as creating a scene and adding a person, movement, shooting, camera following, animations, and more, all in the context of 3D.
- Mobile Apps from 0 to 90: Powered by ColdFusion (Lab on Tuesday, October 4, 8:00 a.m. – 9:30 a.m.). This intermediate hands-on is all about building mobile apps that consume ColdFusion data.
- Unit Testing ActionScript and Flex (Lab on Monday, October 3, 12:45 p.m. – 2:15 p.m., Tuesday, October 4, 8:00 a.m. – 9:30 a.m., Tuesday, October 4, 12:30 p.m. – 2:00 p.m., and Wednesday, October 5, 4:00 p.m. – 5:30 p.m.). No matter how ninja you are (or you think you are) bugs are to be found everywhere. Join this lab to learn about unit testing for ActionScript and Flex.
I want to call out these sessions:
- Design to Release: Building a multiscreen mobile application (Session on Tuesday, October 4, 8:30 a.m. – 9:30 a.m.) presented by Renaun Erickson.
- Adobe AIR App Demo Showcase for Sony Tablet Devices (Session on Tuesday, October 4, 1:00 p.m. – 2:00 p.m.) presented by Ryan Stewart and Taichi Takayanagi. Watch live demos of innovative applications built by your peers that take advantage of the unique capabilities of the new Android Sony Tablet devices.
- Deploying Flash Professional Content Across Screens (Session on Wednesday, October 5, 1:30 p.m. – 2:30 p.m.) presented by Paul Trani. Discover specific workflow enhancements available in Adobe Flash Professional CS5.5. This session steps through the process of deploying Flash Professional content on mobile platforms, including Android, BlackBerry, and iOS.
My team has been working lately on a number of mobile applications so we have lots of experience earned first-hand. I encourage you to attend Renaun’s, Ryan’s, and Paul’s sessions.
See you there and don’t forget you’ll be able to watch the keynotes online if you don’t plan to attend the event in person. Let’s rock the house once again!
About Flash Mobile Versatility
The Flash Platform as a compelling mobile solution across devices is enjoying an excellent momentum. I’m getting and seeing more and more Flash powered mobile apps. While this is interesting and cool this not what I want to focus on in this post.
Most people think about the Flash Platform for mobile as something that enables developers to build mobile apps for Android, iOS, and BlackBerry Tablet OS. What it is not so evident is it’s versatility: you can build almost whatever you want. And when I say this I mean it. You can build sophisticated games (and soon you will be able to build cool 3D games thanks to Stage3D), you can build beautiful apps for enterprise or consumer brands, you can build high performance apps for consumers, and the list can go on and on.
The last big thing that was a show stopper for some projects is about to be removed by the Native Extensions feature. This feature (it will be available in the soon-to-be-released next version of Adobe AIR) will enable developers to extend the runtime and achieve deeper integration with the device by accessing device/OS capabilities or other applications.
Let me give you just one example. Three applications that are quite different in what needs they solve while working and looking just great.
Cassandra Stand is a companion application for Android, iOS, and PlayBook devices. It picks your location automatically and displays time/date, temperature, and news. While this app is a simple one it works and looks great. Congratulations to Leonardo Risuleo and the team.

Web Reader is probably one of the best PlayBook apps for those who use RSS readers. It is fast and intuitive and it works great with Google Reader. I’d love to see these guys writing an article about how they built their app. As with the previous two apps I installed the app on my tablet and played with it. My RSS list is pretty big and I was curious about how they will display all the categories and how easy would be to navigate between the various items. All I can say is that they did a good job :)

Hungry Cho-Cho is a funny little game for iOS. Tomer Reiss of KWAZI shown me this app during my visit to Israel earlier this year. It worked just great on my iPod Touch (at that time they were using AIR 2.5; I’m curious how it would feel with AIR 2.7 as this release brought more speed and performance especially for iOS devices). They released their application and he wrote a blog post about some of the things he learned while developing the game.

If you created some cool mobile apps using the Flash Platform, you know how you can get in touch with me. I’m out!
Building an iPad game with Adobe AIR in a week
Radu Ticiu of Timisoara Mobile Development Group invited me to speak at their August event about Adobe’s solutions for mobile development. And I must say I’m glad I accepted. Not only because the event and the people were great but because the other speaker was quite interesting.
Stefan is his name and he runs one of the most creative companies in this part of the world. Just to give you some context: they’ve won three FWA awards so far. His presentation was about the making off of an iPad game using Adobe AIR and Flash Builder 4.5. So far nothing new or extraordinary. isn’t it?
Well what really caught my attention were these facts:
- While they had great expertise in building Flash applications for the desktop, this was the first project they’ve done for mobile.
- They completed the game from concept to final IPA file ready for publishing in a week.
- The team who built this consisted of one designer, one developer, and Stefan.
Flex Mobile Development: skinning the ActionBar component
One of the important pieces of the Flex framework for mobile development is the ActionBar class. This class lets you create an application title bar with three distinct areas. Starting from left to right you can have a navigation area, a title area, and an actions area. Of course you are not forced to use all these areas.
Why would you want to use this component? There are many reasons for using it but probably the most important is that it is an established user interaction design pattern on Android and iOS. This is how you usually add things like an application or section title, navigation buttons, search input texts, or action buttons.
Future of Flex
Andrew Shorten (group product manager for Flex and developer tools at Adobe) just posted an interesting write-up about the future of Flex. If you are a Flex developer I’m sure you’ll find this worth reading. I know I did.
I won’t spoil the surprise but I have to say that I think this is good news!
If you have comments, please leave a message here! I will make sure it reaches Andrew’s inbox!
Introducing Adobe ColdFusion Developer Week
If you are a ColdFusion guy or maybe just curious to find what’s new in this space then you shouldn’t miss Adobe ColdFusion Developer Week. It is a free series of webinars presented by experts. It starts on September 12 and ends on September 16. Here is the schedule:
- September 12- Getting Started with Web Application Developement Using ColdFusion ›
- September 12 – Working with PDFs Made Easy with ColdFusion ›
- September 12 – Introduction to ColdFusion Components (CFCs) ›
- September 13 – Improve Your ColdFusion Code Through Unit Testing ›
- September 13 – Using ColdFusion Frameworks for Application Development ›
- September 14 – ColdFusion Builder: The Professional IDE to Boost Your Productivity ›
- September 14 – Expand Functionality with ColdFusion Builder Extensions ›
- September 15 – Developing Your First Application Using ColdFusion 9 and ORM ›
- September 15 – ColdFusion and Mobile – Browser-Based Applications Made Easy ›
- September 16 – Accessing ColdFusion Services From Flex Applications ›
- September 16 – Make Your Site Searchable with Solr ›
You can register and read more here.
Flex Mobile Development: pay attention to list.itemRenderFunction
A colleague of mine who is building a Flex mobile application had some performance issues with a list. In short, when he used a pretty heavy custom item renderer (with checkboxes, buttons, and labels) the scrolling performance dropped a lot. When using just a label item renderer everything worked well.
So, we started to debug the code and, as I suspected, the culprit was the layout manager: the virtualization was off.
This was strange as he didn’t turn off the useVirtualLayout flag anywhere in the code – at least not explicitly. So why was the virtualization off? Because he used list.itemRenderFunction to change the item renderer at runtime. If you take a look at the documentation you will find this:
Function that returns an item renderer IFactory for a specific item. You should define an item renderer function similar to this sample function:
function myItemRendererFunction(item:Object):IFactory
Currently, when using itemRendererFunction with a virtual layout (useVirtualLayout=true), item renderer recycling is turned off. Because of this, using itemRendererFunction can cause a performance degradation and is not recommended for mobile. This may be fixed in future versions of Flex.
So, if you use a heavy item renderer and/or you have many items, don’t set the item renderer using the itemRendererFunction method.
Instead, you can wrap your custom item renderer in a ClassFactory object and then assign this object to the list.itemRenderer property. Like this:
var factory:ClassFactory = new ClassFactory(MyCustomItemRenderer);
// set the properties for custom item renderer
factory.properties = {iconField:"thumbnailSmall",
messageField:"description", iconHeight:180, iconWidth:180};
// set the ClassFactory object as the list item renderer
myList.itemRenderer = factory;
There is one more thing. In the example above I used the properties property of the ClassFactory object to set the properties I needed (for example what data property should be used for the message label). You can’t use this approach for setting CSS properties like fontSize. The only solution I found so far is to create setters that behind the scenes are doing something like this:
public class MyCustomItemRenderer {
//...
public function set fontSize(value:int):void {
setStyle("fontSize", value);
}
//...
}
This was my tip of the week. And don’t forget, stay away from useVirtualLayout = false;
Flex Mobile Development: storing data locally
One way to improve the user experience for mobile applications is to save data locally. This technique is important for desktop applications and it is even more important for mobile applications (mostly because the network connection is expensive, slower, or intermittent).
When using applications such as mail or Twitter clients local storage enables users to see the messages or tweets loaded in the previous session. And while you are seeing these “old” items the application can pull in newer items behind the scenes. The main idea is to not to make the user stare at an empty screen each time he opens your application.
A second benefit of this technique is that your application will feel much more responsive. As I said it is possible that the user has a slow Internet connection and downloading 12 small pictures and some descriptions could be visibly slow. Local storage can offer a “performance” boost especially for applications that access data that changes rarely.
Depending on your specific use case you may want to save locally:
- media assets (images, MP3 files, video files)
- text or HTML resources
- XML files
- ActionScript data structures (an array of ActionScript value objects for example)
What are your favorite iOS/Android apps?
I’m really curious to find out what your favorite iOS or Android apps are. If you don’t mind sharing your preferences with me and spending a couple of minutes on writing them down, please drop a comment. You’ll get my eternal gratitude!
PS. You can name as many as you want as long as you consider them killer (or favorite apps).
Flex Mobile Development: caching images using ContentCache
There are many places where you can optimize your code especially when working on mobile applications. In this post I will focus on caching images using the spak.core.ContentCache class (part of the Flex framework).
Right from the Flex documentation, you can see ContentCache could be useful:
Provides a caching and queuing image content loader suitable for using a shared image cache for the BitmapImage and spark Image components.
Why cache images?
So why would you cache images? Every time you set a new source for a Spark Image or a BitmapImage object a new flash.display.Loader object is created to load the image bytes.
Now, let’s suppose you display a list of items and each item has an image (could be an icon or could be a picture). Each image is hosted on a remote server so it has to be downloaded. Finally, some of these images are the same for different items in the list (for example for a Twitter client it is quite common to see many entries with the same avatar; each entry represents a tweet from the same user and the avatar is the same in this case).
If you don’t use a caching mechanism, you will notice that as you scroll through the list it will take some time to load images. And the same could happen for images stored locally especially if they are not very small. While waiting for images to load and be displayed the first time is OK (and there isn’t much to do other than preload them) waiting for the same image every time it is displayed is quite annoying.
Here comes the ContentCache class. This class stores the bytes loaded (actually it stores the LoaderInfo object used for loading each image) and every time an image must be loaded it first checks the cache; if is not there then it goes through the loading process. If it is cached already, then it provides the LoaderInfo object.


