D2WC jQueryMobile Training

Thanks again to everyone who came to my training session at this year’s D2WC! I hope everyone was able to learn a bit more about both jQueryMobile and PhoneGap. As promised here are all the slides and demo files that I used during the training:

360|Flex – Choosing the Right Mobile Development Platform

Choosing the Right Mobile Platform

I had the pleasure of presenting “Choosing the Right Mobile Development Platform ” at this year’s 360|Flex conference. A full recap of the conference is in the works, but I wanted to get my slides up for those who wanted them. Here is what I spoke on,

As more and more projects are requiring mobile applications, developers are faced with a wide range of options. AIR for mobile? PhoneGap? Titanium’s Appcelerator? Sencha? Native? Which development environment makes sense? This session will explore the advantages and limitations of each of these environments from someone who has been in the mobile application development world for over 4 years. Get a clear picture of what these technologies can offer for your mobile development needs.

Look who is teaching!

UCSD ExtensionI am happy to announce that I will begin teaching at UCSD Extension this spring quarter. The class is entitled “Mobile Apps for Multiple Platforms“. I have been approached about teaching before, but this opportunity was too good to pass up. It is a short course of only 6 sessions. I am basing it in part on my upcoming presentations at 360|Flex and D2W.

Here is the course description:

Learn how to design and develop mobile apps using powerful technologies, such as Sencha, PhoneGap, Titanium and Adobe AIR, a technology that enables you to create an app once and then export it to iOS devices – iPhone and iPad – Android, and to the BlackBerry Playbook, all with minor adjustments, all at maximum performance, accessing all the necessary APIs of each device (Camera, GPS and more). Learn how to design amazing apps for multiple screens, how to sign and publish them to the Apple App Store, Android Market and BlackBerry AppWorld. Learn how to tackle fragmentation, guaranteeing consistency, saving you and your clients time and money.

So if you are in the San Diego area, and want to learn more about the various cross-platform mobile solutions, this class will be a great starting point!

Updates abound!


Last week Adobe updated AIR to version 2.7. It seems like it was just yesterday that AIR 2.6 was released (actually it was in April). Hopefully by now your Android devices have all been updated, if not head over to the Android Market and do it now.

Some of the key points for mobile developers are:

Enhanced rendering for iOS: AIR apps for iOS render up to 4x faster in CPU mode.  This change will improve the performance of many AIR for iOS apps, including those built with the Flex framework.  Watch the performance improvements

Faster development time for iOS applications: Developers can now debug and build iOS applications faster than with previous versions using a new mode available within the AIR Developer Tool (ADT). During the development of an application, developers can now choose to use “interpreter mode” to streamline the testing and debugging development cycle.

AIR installation on SD cards for Android devices: This feature allows end users to install or move the AIR runtime onto the SD cards within their Android devices so they can free up storage space on the phone.

To learn more head over to:

Flex SDK and Flash Builder updates available – adds iOS and BlackBerry PlayBook support

Flash Builder 4.5.1 includes Flex 4.5.1 SDK, AIR 2.6 SDK and the updated iOS Packager that provides for great performance of Flex and ActionScript applications on iPad, iPhone and iPod Touch devices. So you will need to manually overlay AIR 2.7 on your version of Flash Builder. The same will hold true for Flash Professional. Learn more.

Flash Builder 4.5.1 also includes RIM’s plug-in for packaging applications for the BlackBerry PlayBook (requiresBlackBerry Tablet OS SDK).

BlackBerry Tablet OS v1.0.6 Update: AIR 2.7 and Flash 10.3

This latest version of the BlackBerry Tablet OS includes support for Adobe® Flash® 10.3 and support for Adobe® AIR® 2.7 software was just push OTA (over the air). The various SDKs from BlackBerry have also been updated. Learn more.


Canceled: AdobeCamp San Diego!



Due to issues beyond our control, we had to cancel this event. We hope to reschedule it later this year.

San Diego AdobeCamp
The San Diego Flash User Group, the San Diego Adobe Developer User Group and the San Diego Photoshop User Group are hosting a 4 hour deep dive into Adobe’s Creative Suite 5.5!

Join us at the Adobe Camp where we will share with you how Adobe Creative Suite tools have evolved to dramatically enhance your workflow and keep your skills fresh. You’ll learn how to work faster and stay ahead of the latest trends, especially the rapid proliferation of mobile devices and the vast array of screen sizes.

Tickets available now!


Saturday, June 25, 2011 from 9:00 AM – 1:00 PM (PT)


Art Instute of San Diego
7650 Mission Valley Road
San Diego, CA 92108

You will discover how to:

Design and develop rich browser-based content for desktops or devices with the leading HTML5 authoring tools.
Develop rich interactive applications for Android, Blackberry, and iOS with Adobe AIR, Flash Professional and Flash Builder.
Learn about the new iPad applications available for Photoshop


Welcome & Overview – 10 minutes
Flash Professional – 30 minutes
Dreamweaver – 30 minutes
PhotoShop – 30 minutes
Flash Catalyst – 30 minutes
Flash Builder – 30 minutes
CF Builder – 15 minutes
Community Showcase – 30 minutes
Wrapup and Prizes – 10 minutes
(lunch is included)


Chris Griffith – Adobe Community Professional / Manager San Diego Flash User Group
James Polanco – Founding Partner / Web Application Architect at DevelopmentArc
Stephen M. Burns – Manager San Diego Photoshop User Group
Darius Fattahipour – Manager Adobe Developer User Group
Demian Borba – Adobe Community Champion / CEO at Action Creations

We are capping attendance to 50 campers, so get your tickets now. Tickets are $20, which includes lunch and raffle entry. The raffle prize will be a copy of an Adobe Creative Suite (sorry, no Master Collection).

Designing Great Mobile Apps

I had the extreme pleasure of speaking at the recent 360|Flex Denver conference. The conference was incredibly well done, John, Nicole, and their assistants did a fantastic job!

Besides working on the mobile apps for the show ( we are still trying to figure out the session survey upload issues), I presented on “Designing Great Mobile Apps” on Tuesday afternoon. I had a lot of fun giving the presentation, even with two Adobe evangelists and one Adobe product manager in attendance (and the great Dee Sadler as well)…

I hope these slides are useful, the session was recorded by the folks at ZaaLabs, so I will let you know when it is ready. Please feel free to ping with questions or comments.

Now go build something!


If you are interested in some resources on mobile design I would also suggest they following books:

Understanding Bundled SQLite databases in AIR for Mobile

Quite often you will want to ship your mobile application with a prepopulated SQLite database. However there are a few things you need to do to before you can fully use them in your application. This article will walk you through the steps you need to take to use a SQLite database on your mobile device.

The first thing we need to do is include our prepopulated SQLite database in our AIR application. For applications built with Flash Professional CS5, go to File > AIR for Android Settings…, then select the General tab . Click the plus icon above the Include Files section, then select your .db file. If you are building your AIR application using Flash Builder, you just need to include the database in src directory.

Now, when you publish your application for your favorite mobile device, the prepopulated database will be automatically included when the application is installed. Here is where things can get a little tricky if you don’t understand the various application directories and permissions.

Without doing anything our application will read the data from our database using this ActionScript snippet:

var sessionDBConn:SQLConnection;
var sessionDBFile:File;
var selectStmt:SQLStatement;
sessionDBConn = new SQLConnection();
sessionDBConn.addEventListener(SQLEvent.OPEN, openSessionSuccess);
sessionDBConn.addEventListener(SQLErrorEvent.ERROR, openSessionFailure);

var embededSessionDB:File = File.applicationDirectory.resolvePath("demo.db");

The issue will be when we try to perform any create/update/delete functions on the database, as they will fail. Although we can read from the NativeApplication.applicationDirectory, we are not allowed to write to this directory. We need to find a solution to transfer the database to a location that we can have write access to. Thankfully, AIR also has another custom directory just for this type of use; NativeApplication.applicationStorageDirectory.

The first thing we need to check for is if we have already copied our database to the writable directory. We can check the exists property on the File reference to database in the writable directory to test this condition.

var writeSessionDB:File = File.applicationStorageDirectory.resolvePath("demo.db");
if (!writeSessionDB.exists) {

Since we have not copied our database to a writable location, the exists property will be false. Now to need to perform our file copy from the applicationDirectory to the applicationStorageDirectory using copyTo method:


If the database is large, you might want to consider using the copyToAsync method instead.

As with all read and write methods, make sure you include event listeners for both IOErrors and SecurityErrors.

With that, our prepopulated database has been copied to a writable directory and is ready for use.

sessionDBConn = new SQLConnection();
sessionDBConn.addEventListener(SQLEvent.OPEN, openSessionSuccess);
sessionDBConn.addEventListener(SQLErrorEvent.ERROR, openSessionFailure);
var embededSessionDB:File = File.applicationDirectory.resolvePath("demo.db");
var writeSessionDB:File = File.applicationStorageDirectory.resolvePath("demo.db");
if (!writeSessionDB.exists) {
sessionDBFile = writeSessionDB;

Hopefully this article will help you as you start developing mobile applications that use prepopulated databases.

Want A PlayBook? Build An App

RIM has announced that starting today, developers can submit their BlackBerry PlayBook tablet apps to the BlackBerry App World vendor portal. And as announced at Adobe MAX 2010 a few weeks ago, developers who create an application for the BlackBerry PlayBook tablet (one that is approved for distribution through BlackBerry App World prior to the tablet’s initial release) are eligible for a free BlackBerry PlayBook tablet. And yes, you build apps using Flash Builder. In fact, most of your AIR development skills will be put to good use when developing for the PlayBook.