Friday, April 01, 2011

Adobe Launches new CEM Software!


After being under the embargo until Mar 31, I can finally talk publicly about Adobe CEM!  Part of the next evolution of enterprise architecture, Customer Experience Management (CEM) is a principle that applies to the user’s experience over the complete lifecycle of their relationship with an enterprise.  Opposed to UX (User Experience), CEM covers more than one system.  Architects who apply UX principles often only work with one system or process at a time, hence are not able to gauge a customer's overall experience.  This covers a continuum of phases, which may be non-sequentially or even concurrently in effect including awareness, attraction, interaction, transaction, servicing, collaboration, and advocacy.  The result of a great customer experience is a positive advocacy while the result of a negative experience is a negative advocacy.

The underlying technology is built on a new markup declaration named UXML (User Experience Markup Language, a markup based on the W3C XML format.  UXML is also built off a new First Order of Logic (FOL) model that helps companies recognize where overlap in interactions occur.  Using this data-centric modeling approach, you might notice, for example, that your web-based forms are sometimes asking customers for information you already possess on them.  Not asking the customer for the same information twice again means a better experience for your customers.  This in turn makes them more likely to be positive advocates for your enterprise.

Another aspect of the core technology behind CEM is the SCHISM engine.  The Social Content Holistic Index Sharing of data and Metadata (SCHISM) helps enterprises reconcile data from several disparate systems or even non-system silos such as call center metrics.  The context engine helps preserve the true semantics of the data so that knowledge workers using the Complex Binary Shell (Complex-BS) have the correct data to serve customers in a way that will make them smile.

While this sounds all very confusing and abstract, the software is easy to install.  You simply insert the first DVD shown below and hit “install” and CEM will do everything for you.  Your customers will become rich, famous, and instantly good looking and thank you for it.   You will be rich, famous and featured in People Magazine as a direct result.  Everybody will be happy.



To find out more about this exciting product visit by the end of today, April 1: http://blogs.adobe.com/experiencedelivers/about-us/

Wednesday, March 30, 2011

Adobe MAX 2011 - Crowdsource Request!

Adobe MAX 2011 will probably once again be the best place and time you can be all year long to learn about Adobe LiveCycle ES.  We've already started assembling ideas for topics internally but I would really like to seek input from the LiveCycle Developer Community.  Specifically, please send me an email to dnickull at adobe dot com and tell me what topics you would like to see taught at Adobe MAX in Los Angeles, October 1-5, 2011.


Monday, March 28, 2011

Adobe MAX 2011!

Adobe MAX - Save the date!

This year's MAX will happen October 1-5, 2011, once again at the Los Angeles, CA convention center.  I will be there!

If you are not familiar with Adobe MAX, it is a once a year dream to be up close and in person with those who drive Adobe, from product management to engineers to sales & marketing. Adobe MAX showcases the latest tools and technologies that are shaping the future of digital experiences. Learn directly from industry leaders and Adobe experts and connect with peers. Make sure you get MAX updates as they are announced and sign up for the mailing list today.

Other action items:

Follow @AdobeMAX on twitter

Hit us up on Facebook

Follow @duanechaos on Twitter - (Hint - there may be some exclusive offers coming from my account!)



Friday, March 25, 2011

Government 2.0 Architectural Patterns

Having co-authored a book for O'Reilly titled "Web 2.0 Architectures", which largely focuses on patterns of things deemed to be "web 2.0", I have turned my mind towards specializing many of these towards government.

The scope for this work would be IT systems that provide services to citizens.  There are several concepts that seem to be no-brainers when you look at them at a high level. However, there may be red tape or other legislative or legal reasons why they cannot be simplified.

A white paper is in order, however here are some preliminary thoughts:

1. Please don't ask me for information you already have!  Governments should avoid asking their users for information they already have.  Practical:  I fill out income tax forms every year in which I have to enter data that is used to calculate my personal taxes.  The reality is that my government already has most if not all of this information.  My employer has to file my income with them, charities already have filed copies of receipts and the government knows exactly how much money they have deducted already for federal and provincial taxes.  Why am I being asked to enter that information into a form again?  Perhaps figuring out a confidential way to send me my completed tax return and then allow me to file "adjustments" would be more efficient from a user perspective?

2. Open Data.  The Government of Canada has recently made several sets of data open for the people who paid for the data (citizens) to access.  (http://www.data.gc.ca/default.asp?lang=En&n=F9B7A1E3-1).  I applaud this move and now we have a responsibility to help them specialize the way data is published at the next level.

3. Allowing multiple channels of communication to be reconciled.  The Canadian government again had a great program for electronic passport applications and renewals, which reconciled electronic forms data and "in person" interviews.  More government departments need to be savvy and adopt this sort of system.

4. Use of Social Media!  I've seen some government departments shun social media.  Sometimes this is based on a fear or perception that the conversations will be antagonistic towards their department.  Guess what?  It is far better to be part of a conversation than to be defined by it.  Get over your fears and get involved with social media.  Use it as a tool to figure out where the common practices are that annoy end users and how to best fix them.  Find out what is working well and what is not.  Find out what the public does not know and use social media to help convey solutions to us.  Use social media to get citizen input and ideas.  Vancouver City council has done this! (http://talkgreenvancouver.ca/).  This involves letting go of ego and recognizing that good ideas can come from anyone.

5. Electronic records.  The Ministry of Health in BC has started moving to EMR (Electronic Medical Records).  This is a huge step in the right direction.  I trust this far more than having all my records sitting in a single doctor's office in paper format.  

6. Use SOA!  Services to citizens are core.  If you can take services and allow 3rd parties to provide them, this could make all our lives simpler.  With this comes great responsibility for things such as ensuring records are not breached or files compromised, however I believe this can be done in a manner that serves the greater public interest.  The use of services could be applied to many contexts including Government to Government, Government to Citizen and Government to Industry (Business).

7. Protect my data!   Please take steps to protect my personal data from hackers or accidental leaks.  Adobe makes a great product called "Rights Management" (part of the LiveCycle ES platform), which can mitigate the impact of disasters, even after they have occurred.   

8.  Use technology to become more open and transparent.  Allow the decisions made, data available and rationale being closed voting to be publicly accessible.  This would be easy to implement by using a Robert's Rules XML schema to mark up data that would allow anyone to find out who attended meetings, who voted on various topics, and categories and more.  The public would love it more than finding out later or worse, being critical based on false beliefs.  Transparency should be a cornerstone.  Isn't this what democracy is all about anyways?

9.  Accessibility by Joe Average.  Typically, access to senators, heads of state and other high ranking public officials has been perceived as impossible for the average person.  Using the collaboration tools available via the Internet, governments can easily allow citizens to have better access to information and individuals charged with the fiduciary duties of public office or as public servants.   Products like Adobe Acrobat Connect could be used to have a citizens briefing once a week to allow individuals a platform to engage with government on various topics.  Obviously this wouldn't work in a general setting (e.g.: Obama allows any citizen to discuss any topic), however scoping this to narrow issues such as local municipal politic issues could have a huge impact.

Anyways, these are some initial ideas I had.  If you think they are bunk or have others, please leave a comment.


Tuesday, March 22, 2011

WebVisions Hands on Mobile Android Code Camp!

If you are in Portland, OR on May 25-27, you must come to the Oregon Convention Center for the WebVisions Event. WebVisions is a nationally recognized conference that explores the future of Web design, technology and business strategy.

I have been invited to give a hands on development course that will lead people through the process of building a mobile application that deploys to the Android and BBos platforms.

Title: Hands-on AIR 4 Android Development

Desc: This hands-on Boot Camp is for developers to build an applications targeting the Google Android O/S.  Adobe Sr. Technical Evangelist Duane Nickull will prepare attendees ahead of time to complete this course using their own laptops.  Attendees will learn the basics of AIR 4 Android/BlackBerry O/S such as:    

- basic application architecture
- creating a new application project and how to use the emulator    
- invoking services and binding result formats including some best practices    
- switching between multiple views    
- invoking system actions via intents    
- touch screen gesture control         
- packaging the output as *.APKs to publish to the marketplace

Due to the short time of this session, all attendees will be given source code samples and resources to take away for self paced learning.

Thursday, March 17, 2011

Android 50% Faster than iPhone on the Web?

Today I came across a blog post that tested load times between iPhone and several Android devices.  As written: (see original post on Wired)

"Android phones whisk users across the web more than 50 percent faster than the iPhone, according to a study that compared the two top mobile OSes performance when downloading web pages.


The study, conducted by mobile website optimization company Blaze.io, involved more than 40,000 downloads of web pages belonging to the Fortune 1000 companies. Android loaded pages 52 percent faster when rendering full web pages than the iPhone. On average, Android phones took 2.1 seconds to render non-mobile optimized web pages, while the iPhone took 3.2 seconds.


Android bested the iPhone on site loading time a whopping 84% of the time."

Having run Gingerbread (a.k.a. Android 2.3) for two weeks now on a Nexus One, my general observation is that it is indeed faster that both FroYo (Android 2.2) and iPhone iOS for loading pages but I am pragmatic.  I would urge everyone to be pragmatic about these results.  They only show a single test (loading a web page) and the environment did not appear to be properly controlled.   The headline is hence somewhat misleading and sensationalistic.   What would be better is to do these sorts of tests in a closed environment and break the results down into HTTP request creation, transfer time, request bandwidth, server processing time, response transfer time, response bandwidth and client side parsing and display (assuming HTTP get).  Isolating the actual HTML/JavaScript parsing, processing and presentation is the real critical factor in making such claims in my opinion.  This test should not be done by loading a Fortune 1000 company's website on the open web as this represents a large an uncontrolled factor for the tests.  A counter argument would be that 40,000 loads does establish a fairly reasonable chance that the test results are somewhat accurate but no one can guarantee that the server itself was not busier when the iPhone requested the pages.  Let's look at what is behind each side of this competition.

iPhone's Safari also uses the WebKit open source browser engine, the same code base as Google Chrome and the Android browser (according to Wikipedia).  To me this seems somewhat relevant information.   WebKit's JavaScript engine, JavaScriptCore, based on KJS, is a framework separate from WebCore and WebKit, and is used on Mac OS X for applications other than web page JavaScript.  Unlike iOS, Android is open so anyone can add a browser to the marketplace.  I can write a basic web browser that supports CSS, AJAX, JS, and some HTML5 features in about ten lines of code using Adobe AIR, which in turn uses the Webkit implementation so if I choose, I can have the same browser as the iOS more or less.  Nevertheless, Android offers many different browser choices.  Some of these are:

Dolphin (hardware acceleration for Honeycomb (Android 3.0+))
Opera Mini (claims to be fastest)
Skyfire (supports Flash, 2,000,000 downloads)

and many more.  Here is an article on an Android browser shootout.

My second phone, the Samsung Galaxy S, runs Android 2.2 and is very stable.  The ability to view Flash is an important factor for me for both of these devices, which is why I gave my iPhone to my sister.  The one item I do miss is the iTunes Synchronization however I am debating getting out of the iTunes/Appstore altogether and find a replacement.  Any recommendations for  OS X music management software would be appreciated (please leave a comment).

The long and short of this is that while my perception is that Android is indeed faster at loading web pages, the key thing that wins my approval is multiple choices.  YAMMV! *

* Your actual mileage may vary  

Wednesday, March 16, 2011

How the architect looks at Customer Experience (video)

What does Customer Experience Management really mean, abstract of how it is implemented? THis blog post should really be entitled "CEM for Architects".   This was what I considered when being interviewed in Barcelona earlier this year. The goal was to explore what "Customer Experience" means in terms of how enterprise architects might think.




The idea of "user experience" itself is not new. Most competent architects consider the users' perspectives during any interaction with a system or systems they are designing. Customer Experience is unique and represents an emerging discipline of modern enterprise architecture covering many aspects of the logical, data and process views of any enterprise, spanning more than one system. Customer Experience (CX) is the sum of all experiences a customer has with a supplier of goods or services, over the duration of their relationship. This duration may cover several unique stages including awareness, discovery, attraction, interaction, purchase, use, cultivation and advocacy. CX as a term covers multiple contexts (the lifetime of a relationship down to an individual transaction. (Source = Wikipedia).

To give a more concrete example, an individual may have a history with an enterprise. This history may encompass several of the stages mentioned above including discovery (data may be stored in website interaction analytics, browser cookies, and tracking), interaction (data may be stored in CRM systems), use (data may be stored in the state of a business process instance), and advocacy (data may be stored in tweets, Facebook posts, and other social media).

The question that looms before any architect is how to reconcile the various data and historical interactions so your enterprise can deliver the best possible experience. Even the term "Customer" here is probably too prescriptive. The experience factor can also cover users that are within your own domain such as employees. Now factor in that this customer may have multiple concurrent channels of communication open and the problem comes into focus very quickly. How can you reconcile social media trails with CRM data? How can the telephony system be reconciled with the users' web browsing data and process interactions? The graphic below illustrates this challenge.



The idea of converging the data required in any specific channels of interaction so you can deliver that experience is really powerful in terms of the experience it can deliver. If I call a company and the person who picks up the phone can immediately have full access to all my data, chances are high that they will serve me better.  The more they know about me, the less they have to query me at the very least.  It always agitated me when I would phone the credit card company and had an automated attendant ask me to key in my CC number, only to be forwarded to a human operator who had no visibility of the data I just entered, so I had to provide it to them again (or having my call forwarded to another department of an enterprise and having to repeat an entire conversation from start to finish).  An important thing to note here is that companies that successfully mitigate this have a huge advantage in garnering customer loyalty over those who ignore it.  Even though customers may not be able to distinguish the exact reason one company offers a better experience over another, the experience will be felt.

So where does Adobe fit in?

The development of LiveCycle ES as a service oriented platform, essentially what the industry calls an Enterprise Service Bus (ESB), enabled data to be aggregated from various sources and gave enterprises the ability to access data and orchestrate data and services into processes, both short and long lived.  The acquisition of Omniture gave Adobe the leading web analytics suite.  The acquisition  of Day Software completed the technology for delivering CX and integrating social media channels however the integration of these technologies will really shine in the next evolution of the LiveCycle ES platform.  Additionally, the acquisition of Demdex provides the next evolution of our enterprise platform with the ability to enable clients to aggregate and manage their strategic data assets as well as make data actionable in a broad range of third-party advertising technologies.  Even the latest beta release of Flash Player 10.3 is rife with new media measurement features that allow deeper access of analytics data.

The mainstream press seems to have missed the agile Adobe acquisitions in terms of where the company is heading and what it will be able to deliver to enterprise customers in years to come. Some analysts like RedMonk, Forrester and, Gartner seemed to have taken notice though.  We've quietly built ourselves into a superpower in terms of being able to deliver CX to our customers.

To sum this up, architects MUST consider the view of overall customer experience over the lifetime of the relationship between their enterprise and the customers.  The alpha architects will need to consider how to successfully integrate RIA data with back end systems and distributed web data, sometimes in the form of a trail of digital breadcrumbs.  When they consider the many aspects and challenges of this view of architecture, it will become apparent who has positioned themselves as the leader.

Enjoy the video!






Friday, March 11, 2011

Flash Player 10.2 for Android release date set

OK – earlier this week we announced the “Beta” release of Flash Player 10.3.    Today we are announcing that Flash Player 10.2 (for Android) will be available for download via Android Market on March 18 (one more week). This new release of the mobile version of Flash Player 10.2 is a production GA (General Availability) release for Android 2.2 (Froyo) and 2.3 (Gingerbread) devices that meet the Flash Player hardware system requirements.  What is very cool is that this is also initially a beta release for Android 3.0 (Honeycomb) tablets.


Adobe has been working very closely with Google to ensure tight integration between Flash Player 10.2 and new OS and browser capabilities in Android 3.0.  The March 18th beta release of Flash Player 10.2 in conjunction with Google’s first system update to Android 3.0  (version 3.0.1) currently underway for the MOTOROLA XOOM™ will deliver the first phase of our work together.


Next week's release will feature Stage Video which will provide a superior playback experience for video on mobile devices.  There are also some other changes but the majority are deeper under the hood.  

Wednesday, March 09, 2011

Tuesday, March 08, 2011

Flash Player 10.3 (Beta) Launches (Linux/Mac/Win)

Adobe just released a beta version of Flash Player 10.3 for Windows, Mac, and Linux at 9pm PT last night on Adobe Labs. The goals for this beta release are to preview the next release of Flash Player, get the broader developer community and technical savvy users to test new features for developers, and enhanced user privacy protection.

Things I am stoked on?

1. That we once again released the Linux version as a first class citizen with Mac and PC!

2. Media Measurement – Developers can implement video analytics with as little as two lines of code. Analytics solutions can use a new set of open APIs to easily implement video analytics irrespective of implementation or delivery protocol.

3. Acoustic Echo Cancellation – Developers can now very easily create real-time audio collaborations with high-quality audio, such as telephony, in-game voice chat etc.  I wonder how long it will be before someone writes Acrobat Connect Light?

4. Integration with browser privacy controls for managing local storage – Flash Player users now have a simpler way to clear local storage from the browser settings interface – similar to how users clear their browser cookies today.  This has been consistently asked for by the community.

5. Native Control Panel – Flash Player 10.3 provides users with streamlined controls for managing their Flash Player privacy, security and storage settings. This means that Windows, Mac, and Linux users can access the Flash Player Settings Manager directly from the Control Panels or System Preferences on their computers.  This again has been a top request.

6. Auto-Update Notification for Mac OS.  If you're on a Mac, you're like me and probably sick of the endless updates. Nevertheless, they have to happen so this makes it easier.

Have fun and code with flair!

Friday, March 04, 2011

Customer Experience Management - A Case Study in Failure

I want to share an example of a failure for a company to grasp the importance of customer experience management.  If you have not heard, Customer Experience is a term used to describe the sum of all experiences a customer has with a supplier of goods or services, over the duration of their relationship. Customer Experience covers multiple phases and contexts including awareness, discovery, attraction, interaction, purchase, use, cultivation and ultimately advocacy or ranting (like I am doing).

The story starts with me.  I am an avid outdoors type person.  I love having good ski, snowboard, mountain bike, kayak and hiking gear.  I generally buy nothing short of the best as I've found myself in places where your life depends upon your equipment.

Recently I bought some Vibram hiking boots from Mountain Equipment Co-op.  They basically wore out in about a year despite the fact they were only one of 6 pairs of footwear I used in that year.  This includes the gaping holes in the toes and any of the plastic area.  I called MEC which were very helpful but they said my best bet was to talk to Vibram myself.  I went to the website twice now and left messages telling someone what happened and asking at the very least if they would contact me.  I feel the quality of the boots is real bad and could have been possibly improved by the company examining them (I will otherwise not use them anyways).



Anyways, long story short, no one returned any communication to me.  The company has permanently lost me as a customer over this.  They showed no consideration for me as a customer.

Now while I rant about other companies on this blog with similar story (Rheem Water Heaters, Hillcrest Plumbing - both criminals IMO and The evil City Center Florists), I also want to commend companies that do really good things with customer experience.  I recently made a post applauding Marriott Hotels for outstanding customer experiences.   I've had similar great experiences with Shaw Cable Group, Delta Faucets (great warranty service) and others like Mountain Equipment Co-op.  

So what are the lessons to be learned here?

1. If you run a company, you can no longer ignore the power of the people to spread bad news of horrible experiences via social media such as blogs, twitter, facebook etc.  A simple person like myself can put such a message out and it will eventually reach potentially millions of your customers.

2. I would suspect people are much more motivated to spread negative experience than good ones.  Companies like Vibram and ignore your customers when they have serious and legitimate complaints, it will hurt you.  Just read the follow on messages on the City Center florists blog post about how others reacted to their deceptive and illegal business practices - http://technoracle.blogspot.com/2010/03/vancouver-city-centre-florists-use.html

3. You need a platform to reconcile the multiple channels of experience into a single view at your company.  This should take into account social media activities as well as data from existing business processes and CRM type systems.

4. Understanding the context of an experience is essential.  This will probably involve ontology work or semantics for a shared understanding of the possibilities, meaning and concepts within an experience, with inside of and outside of the enterprise.

5.  The old way of doing business is dead!  Big multinationals cannot simply adopt the Ostrich move (stick your head in the sand until danger goes away).  YOu must be proactive in ensuring your customers have the best experience or they will not be your customers much longer.

In closing, if I owned stock in Vibram,  I'd be selling it as fast as I can.  Bad experience, shoddy workmanship and no desire to communicate with customers are a recipe for financial disaster.

Wednesday, March 02, 2011

Adobe's HTML5 Story?

Have you ever written something that you won't have to take action on for a long time and then later thought "what have I got myself into"?  I did just this by submitting a talk for Web 2.0 Expo, taking place this month in San Francisco, CA at Moscone West.  I've spoken at the Web 2.0 Expo events several times before and they have been really valuable.

My talk is entitled"HTML5, Flash and AJAX to the Year 2020".  The official description (with a typo fixed) reads as follows:

"This session will take a deep and pragmatic look at the complete architectural capabilities and suitability of HTML5, Flash and AJAX related technologies in an attempt to separate the fact from fiction. While the media has sometimes pitched headlines such as “HTML5 vs. Flash”, the reality is that almost 100% of Flash relies on HTML and JavaScript today. Flash is not even directly comparable to HTML5 whereas the SWF file format might be a closer comparison. Do not dismiss this session as an Adobe push for Flash, the reality is that Adobe is very excited about helping drive HTML5 and the advancement of the W3C standard is going to have a significant impact on Adobe CS products such as Dreamweaver, video tools and Photoshop.


What HTML5 brings to the table is “choices” for those who are implementing future applications on the web and in order to make decisions, an understanding of the forces working against their desired outcome needs to be facilitated. The speaker will look at several specific areas such as video and simple animations and show benchmarks and optimizations that can be done to create an overall good user experience. Data will be shared as well as hypothesis about when one technology may offer an advantage over another."

While I am open to suggestions on specific areas to cover, my first homework is going to be to reread the latest drafts of both the W3C HTML5 and Adobe Shockwave Flash specifications.  I want to deliver some real content based on fact.  So far the talk will feature the following segments (subject to change):

- discussing possible definitions of what people really mean when they say "HTML5" (+ AJAX)  and "Flash"
- discussing the capabilities of each, weaknesses, and where hybrid solutions occur
- predictions on where these technologies may drift in the next 9 years

The last part will obviously be a wild guess.  No one could have predicted that any consumer can use a 0.6 cm thick device with a 800 X 480 pixel display to access the full published knowledge of mankind 9 years ago.  Thinking that such devices have GPS, HD video cameras, voice recognition etc. makes me wonder how the hell I can give an accurate description of the three technologies into the year 2020.

FWIW - I have recorded several interviews on this topic and while I do not consider myself an expert, I'd also like to hear feedback on these articles:

O'Reilly Radar - http://radar.oreilly.com/2011/02/flash-html5-developers.html
DZone Interview - http://css.dzone.com/videos/talking-about-html5-mobile-web?mz=8019-adobe&default=false&zid=159&browser=14&mid=0&refresh=0

I am therefore asking for anyone who has ideas to contact me.  Not ruling anything out at this point!  Crowd-sourcing is not cheating - just a great way to use collective intelligence.

Tuesday, March 01, 2011

Start using the Flash Player 11 Standalone Debugger

I came across a great tutorial that is sort of like "the missing manual" for how to set up your development environment to use the FP 11 debugger.  This has been announced with the "Incubator" program, along with new features including the “Molehill” 3D APIs for Flash Player and AIR and Cubic Bezier Curves (rocket science if you ask me).

Now before I point at Jesse's blog post of instructions, please read the following statement carefully:

"These are early builds of Flash Player or AIR and may not be as stable as a final release. However, the current released features should still work as expected. AIR applications should be for developer testing only, and Flash Player builds are not recommended for use in your default, daily-use browser. The availability of AIR and Flash Player and supported OS and platforms may vary on the downloads page between updates to this program."

OK with that? Great. First I would like to say a big thank you to Jesse Nicholson of Ascension Systems (a Canadian company) for writing up this tutorial and posting it. Rather than repeat it, please read the original article here (it has been updated a few times):

http://blog.ascensionsystems.ca/?p=147

Wednesday, February 23, 2011

Build a LiveCycle ES Encryption Process using Watched Folders

This video tutorial shows how anyone can use LiveCycle ES Workbench to build a simple process with watched folders as endpoints to encrypt PDF documents. The watched folder configuration was done as it was suggested on the Google Livecycle Developers list.

If you want to seriously geek out on this and try it, you can download LiveCycle ES from http://www.adobe.com/products/livecycle/.

Build a Livecycle Encryption Process using Watched Folders from Technoracle on Vimeo.

Tuesday, February 22, 2011

How to work with PDF in Adobe AIR (Source Code)

AIR has worked with PDF since version 1.0. When Adobe AIR first launched, there was a great amount of focus on the PDF inclusion within the runtime and it was given equal billing with both Flash and HTML. For some reason, much of the focus on AIR development trends has been on working with ActionScript and MXML rather than PDF. Nevertheless, there is a steady and growing community of developers who find themselves facing the task of making AIR and PDF work together. This tutorial will help you understand the basic architecture and structure of an application.

The finished Flex 4 project can be downloaded from the location below (it is named MAXABC04-PDF.fxp). This application was compiled with Flash Builder 4, Flex SDK 4.01 and AIR SDK 2.5 http://www.22ndcenturyofficial.com/ForBlogDoNotDelete/

How it works:

Architecturally, the runtime engine for HTML within Adobe AIR is WebKit (http://www.webkit.org/), an open source implementation that supports many HTML 5 features. The exact version of the WebKit library varies based on the AIR version you are using. To display PDF content, the AIR runtime uses a PDF plug-in to the AIR WebKit library. For developers, you communicate to the PDF document object through the HTML DOM and by using a scripting bridge within the PDF document itself.

To build the overall project, you need four main components – a main.mxml application, an HTML file that contains a reference to the PDF, the AIR application descriptor file, and a PDF document.


The HTML file is only tasked with loading up the PDF as an object. The file is very simplistic.


The PDF document is basically a 4 page long document containing a bunch of random Latin words. The following script has been added to the PDF document.


You can examine this PDF yourself by taking it from the project referenced above and opening it with Acrobat X and using the JavaScript Editor (Reader and Acrobat both have JavaScript VMs that work at runtime).

This script simply listens for an incoming message. There are four handled messages: ZoomIn, ZoomOut, PageUp and PageDn. The switch-case statement shown above maps these messages to specific instructions known natively to the plug-in that match the basic semantics of the message.

In order to talk to the PDF, you first have to load an HTML page within your AIR project. The basic AIR source code is as follows:


On line 11, the function init() simply enables the four buttons as the HTML DOM is loaded. This is triggered via the initialize event of the application.
Line 23 contains the key function sendMessage(), which sends one of four messages to the HTML DOM. This function accepts one parameter, which is the String message sent to it based on which button is clicked. As you try to type line number 27, you will notice that the code complete does not work in Flash Builder. This is because these are dynamic objects. Line 27 creates a new Object variable called pdfObj by referencing the pdfhtml (a variable name given to the HTML component on line 28) htmlLoader.window.document object and calls the method getElementByID(). The parameter name “PDFObj” matches the name of the Object within the HTML page. Line 28 simply sends the message that corresponds to the button pushed, which then gets picked up by the script in the PDF document.

Below is a screenshot of the AIR application with the buttons that can navigate forwards and backwards, and zoom in or out.

That is pretty much a basic starter for controlling PDFs from AIR. To get more advanced functionality, you will need to study up on the scripting functions available within the PDF runtime environment and then add the script bridge necessary to control those functions. Good luck!.

Monday, February 21, 2011

Duane's World #32 - more on mobile development



This video is Duane's World episode 32, the season 2 finale. It focuses on mobile development including some dives into architectural best practices.

Thursday, February 10, 2011

Marriott Hotel Customer Experience Management

This week I have been staying at the Marriott hotel in Waltham, MA. Now when I get bad customer experience, I usually bitch.  For example, when City Center Florists tried to rip me off last year, I posted this blog entry.  When Hillcrest plumbers and Rheem scammed me, I exposed it.

As much as I bitch about bad companies, I also want to acknowledge companies that go out of their way to provide great customer experience management.  The Marriott hotel in Waltham, MA this week had four significant issues related to my stay:

1. A fire alarm that disturbed all guests in the middle of the day
2. A power outage that prevented movie ordering and room service
3. The iron in my room was defective
4. One day the cash register at the coffee stand died (in the AM no less)

Now none of these things really matters in the overall scheme of things, but nevertheless, Marriott management sent me an apology letter for #1, gifted me points for #3 even though when I called they had a working iron in my room in less than 3 minutes and even ordered me a pizza from a third company for #2.   The clerk in #4 got me my caffeine and settled the bill later (I also gave her a huge tip).  On top of that, the staff rocked.  Every phone call was answered with courtesy and offers of solutions.

They also had very courteous staff and made do with what they had.  When the cash register at the coffee shop stopped working, the clerk still served coffee and made sure we all had what we needed.

In my book, Marriott hotels are doing a great job of managing their customers' experience.  I wish other companies would follow their lead.  They recognize that customer experience management is an important factor in overall long term success.  Technoracle (me) gives them 9.5/10!!

This is a totally unsolicited report and I just want to publicly acknowledge that Marriott Hotels really seem to care about CEM.  Great job!  Thank you Marriott.  You have a new depth of loyalty from me!

Duane Nickull

Wednesday, February 09, 2011

Adobe Flash Platform and LiveCycle Roadmaps for UX - Barcelona

This is a video of a presentation I co-hosted with fellow evangelist and good friend Michael Chaize in Barcelona. This attempts to put some story behind the roadmap for Day Software and LiveCycle ES (next version) as well as explain the concepts of Customer Experience Management.

Tuesday, February 01, 2011

Getting Your Flash Builder IDE set up for BlackBerry PlayBook Development

This is a simple tutorial to help you get your Flash Builder 4.5 (Burrito) set up to develop for and emulate the BlackBerry PlayBook.  I've been playing with the PlayBook beta and it's pretty impressive.



Setting up Adobe Flash Builder 4.5 to compile for BlackBerry PlayBook from Technoracle on Vimeo.

Some screenshots:




Monday, January 31, 2011

New Tutorial - Build a new mobile application (RSS Monitor) in 30 minutes


The written version of the tutorial is now online.  This tutorial will show you how to build a mobile application for reading the Slashdot RSS feed using Flash Builder 4.5. In order to complete this tutorial, you will need Flash Builder "Burrito" and the sample files, which include two Flash Builder projects:

The starter project [contains icons and other assets]
The completed project [the finished project that you can use as a source code reference]

This tutorial is brought to you courtesy of the Adobe Evangelism team. You may reproduce, modify, and use these materials for just about any purpose as long as you respect the copyrights of the owners involved [including Slashdot and Adobe]. You may use this to teach courses in mobile development.

Link:  http://www.adobe.com/devnet/air/articles/mobile-rss-reader.html