Friday, June 03, 2011

Preparation Guide for Hands on Workshop

Flash and the City is next week in New York.  If you are registered and taking the course to learn Flex/AIR mobile development, you will need to do some preparation in advance of walking into the room.  This blog post outlines the steps necessary to be ready on Thursday, June 9.

If you have any trouble with the setup, please send an email to me at dnickull at adobe-dot-com. I also plan to be in the lab room 20 minutes before the session to answer any questions or help out.

See you there! This is going to be the best workshop I have ever had the pleasure of teaching!  An expanded version of this course will be taught at this year's Adobe MAX in Los Angeles.

Sincerely,
Duane Nickull
Adobe Senior Technical Evangelist

System Requirements for BYOL lab

Mandatory:

1. Bring your own laptop.  Operating System: Windows or Mac OS X.
2. Bring a power cord.
3. If you have a Google Android Device running the 2.2 or later operating system, please bring that and;
4. A cable to tether it to your laptop. It is not required that you bring your Android Device but it is highly recommended.

If you have more than one laptop, please bring one with a touch pad that supports transformation gestures (most newer Macs support this) and a camera and microphone.

Mandatory Software required.
Flash Builder 4.5 - http://www.adobe.com/go/try_flashbuilder

Flash Builder may be installed as a trial. This will also install the AIR runtime and SDK.

Optional Software
If you plan to build for the BlackBerry Tablet operating system, please follow the instructions here: http://technoracle.blogspot.com/2011/02/getting-your-flash-builder-ide-set-up.html

Mandatory Courseware:
All courseware will be distributed at the venue itself. If you have time in advance, please download the zip archive from http://www.22ndcenturyofficial.com/ForBlogDoNotDelete/FATC.zip

Notes:

Windows
• 2GHz or faster processor
• Microsoft® Windows® XP with Service Pack 3, Windows Vista® Ultimate or
Enterprise (32 or 64
bit running in 32‐bit mode), Windows Server® 2008 (32 bit), or Windows 7 (32
or 64 bit running
in 32‐bit mode)
• 1GB of RAM (2GB recommended)
• 3.5GB of available hard‐disk space for installation; additional free space
required during
installation (cannot install on removable flash‐based storage devices)
• 1024x768 display (1280x800 recommended) with 16‐bit video card
• DVD‐ROM drive
• QuickTime 7.6.2 software required for multimedia features
• Eclipse 3.4.2 or 3.5 (for plug‐in installation)
• Java™ Virtual Machine (32 bit): IBM® JRE 1.5, Sun™ JRE 1.5, IBM JRE 1.6,
or Sun JRE 1.6

Mac OS
• Multicore Intel® processor
• Mac OS X v10.5.7 or v10.6
• 1GB of RAM (2GB recommended)
• 4GB of available hard‐disk space for installation; additional free space
required during
installation (cannot install on a volume that uses a case‐sensitive file
system or on removable
flash‐based storage devices)
• 1024x768 display (1280x800 recommended) with 16‐bit video card
• DVD‐ROM drive
• QuickTime 7.6.2 software required for multimedia features



Tuesday, May 31, 2011

Video Tutorial: Using Transform Gestures in Mobile Development

This is a quick video that shows the code to control zoom gestures when developing mobile applications with Flash Builder 4.5.  The source code is available if anyone wants it.  Just ping me at dnickull at adobe dot com.



Code Explained:

Line 9: The init() function is called on the viewActivate event for this example as it is a mobile application based on views.  You could queue it from other events.

Line 11:  the Variable myBC is a Spark BorderContainer.
Line 16: The BorderContainer is cast into a sprite and the event passed to the onZoom function is used to scale the sprite on the X and Y planes on lines 19 and 20.  If you want to keep the user from shrinking the sprite below a specific size, the test is done on line 17 to detect the scale.  You only need to test either X or Y and the proportions are constrained.  The best practice for most cases will be to put some sort of minimal scale on such items as it will be possible the user scales it too small and can no longer use a two finger zoom gesture.


To learn more about this topic, make sure to attend Adobe MAX 2011 in Los Angeles and register for the Hands on Mobile AIR camp I will be leading.  Registration is open now and even though we had two mega-labs last year, they both sold out very early.

I am also teaching a similar course next week at Flash and the City in New York City June 9 from 9:00 AM to 2:00 PMN local time.  There are some spaces still available.  Mobile developers are in high demand.  Increase your skills!

Saturday, May 28, 2011

Free Adobe CS 5.5 Web Premium (Flash and the City 2011)


Buy tickets to Flash and the City and win Adobe CS 5.5 licenses (retail value of $1,799), 
VIP seating at the #FATC keynote! http://bit.ly/mzSswF

FlashAndTheCity is only two weeks away and they are giving
something back to all attendees registering for the event in the next
three days, starting from today, May 25, 2011 through Friday, May 27,
2011. It is a free Web Premium Master Collection CS 5.5
(retail value of $1,799), courtesy of Adobe.

This is the full retail version and you can select either the license
for PC or for a MAC. Additionally, the winner will receive a premium
VIP seat at the FATC keynote.

Rules

I will pick a number, between 1 and whatever
number of tickets have sold, and announce the number on Twitter.  
To win you have to follow all three of us on twitter. We
will match that number with the person who bought the winning ticket
number and give away the free license that day. The winner will be
announced on Twitter. HURRY UP and REGISTER NOW!!


Remember, once the event sells out you will miss a chance to attend
one of the most exciting events this year, so do not delay, purchase
your ticket now!

My Twitter is @duanechaos

Friday, May 20, 2011

Adobe MAX 2011 - A Special Deal for Loyalists!

Have you attended Adobe MAX in years past?  If so, you should know about this special promotion for our loyalists (defined as people who have attended MAX previously).  Until May 31st, 2011, you can use this special URL and token to register for Adobe MAX 2011 here.

Please help us spread the good word via twitter too!    Here is a cut and paste tweet (below) or just use the tweet button on this page.  We need help to reach all the loyalists.

Previous #AdobeMAX goers, register before 5/31 for a discount! http://adobe.ly/maxloyal

What is cool about Adobe MAX this year is the fact there is a second event running in parallel with MAX.  The Adobe Digital Enterprise Summit 2011 will take place October 3rd and 4th. Why should you attend?  For starters, I will be speaking at this event.  Second, staying at the forefront of enterprise architecture requires constant exposure to new technical innovations and an understanding of industry trends.   Come to this event and connect with a thriving ecosystem of thought leaders, partners, and technology solution providers. If you are a business decision-maker, technology leader, or marketing professional interested in deepening customer intimacy and extending brand value within your organization, this event is for you.

See you there!

ciao!

Wednesday, May 18, 2011

Club Intrawest Points for Sale

This blog post has been removed to reflect a status of an impending offer. Sorry for any inconvenience.

Tuesday, May 10, 2011

I love my Galaxy S Android Phone's Battery Life!

At Technoracle, we regularly test out devices for long term reliability, performance, and durability.  Mobile devices often vary dramatically from the manufacturer's claims and real world tests reveal the true nature of a specific device.  For example, some smartphones have claimed 4-day standby time.  No device I have ever used has ever met such a claim while we were using it.  Most users we know are happy to get 24 hrs out of their devices with real world uses.

Four days of use from a single charge might be possible if you disabled all functions other than sitting idle and left the phone in a cool room with no magnetic interference.  For most users, add in email account monitoring, some web browsing, navigation and a few calls and the time goes down significantly.  The major reason I went from iOS to Android is that I hated the idea of someone sealing my battery into the phone.  I want two batteries and the ability to swap them out as they get tired. Nevertheless, the Samsung Galaxy S has amazed.


The above screenshot clearly shows that the Samsung Galaxy S smartphone has amazing battery life very close to what the manufacturer claims.  The approximate 65% charge is after 1 day 3+ hours between charges with cell standby and use.  What I have noted is the following tips work well on Android for saving battery life:

1. Reduce screen brightness.  Do this manually.  The auto-detection itself uses energy when woken up.
2. Configure email not to push automatically or synch.  Do this manually.  What point is there for you to have email pushed to you that you will not read?  Wait until you want it, then fetch it.
3. Disable GPS when not in use.
4. Disable Bluetooth when not using.
5. Regularly check the application and memory manager and clean out programs that you are not actively using.
6. Disable notifications from applications (Twitter, Facebook, news, weather, etc.) that you do not need.  When I go on my boat, I do require that severe weather be pushed to me.
7. Disable auto-orientation.  The listener that detects position changes runs the accelerometer, a piece of hardware that consumes battery life.  Luckily the feature can be disabled from the pull down menu.

End result?  

Thursday, May 05, 2011

Flex/AIR Mobile Color Picker

I have been writing a new application the last few days and ran into an issue.  The old mx color picker has no counterpart in Flex Mobile Development.  After some quick research, I decided to make a view that can be reused by others.

The source code can be downloaded from http://www.22ndcenturyofficial.com/ForBlogDoNotDelete/ColorPickerView.mxml
 (right-click on PC, Control-click on OS X and select "Save Target as..." or something like that).  PS - this is my band's official web site so while you're there take a listen to our music!

The controllers are simple Spark Horizontal Sliders that have ranges from 0-255. Each slider has a change event handler registered to the same function.


The logic is included to lay these out for both portrait and landscape modes.  A visual reference to the current color is represented within a Spark rect.  The Button calls a blank function to be used to take whatever action you want to set a color.


As you move the sliders, the color changes.

  


The setColor function does not return anything.  All it does is grab the values and convert them to be used either as Hex (for example, "0X0f3eff") or uint formats.  A click handler is registered against the button to set the color, which can be done from the setLineColor() function.


A small utility class is used to prevent incorrect values from being written when ranges are less than one character long.  The checkLength() function has comments and is self explanatory.  This is to prevent '0f0f0f' from returning "fff" if the values are all 15.


If you use this and find any way to improve it, please consider sharing via this blog post.

Tuesday, May 03, 2011

Duane's World #33 - Ben Watson on CEM/CX

This episode of Duane's World was filmed in Barcelona, Spain with Ben Watson.  The talk focuses on Customer Experience Management (aka CEM) which is an emerging architectural discipline focusing on a customer experience view.  While previous user experience (UX) work has been done by architects in the context of a single application, Customer Experience Management spans the experience over the complete lifetime of a relationship and over multiple channels of interaction (examples: telephone, email, web, in person etc).



If you are not yet convinced that CEM matters, here is some great additional reading on the topic:

"How to Approach Customer Experience Management". Gartner.com. 2004-12-27.

Debor, Jessica (2008-02-20). "CRM Gets Serious". CRM Magazine.

Peppers, Don and Martha Rogers, Ph.D. (2008), Rules to Break and Laws to Follow, Wiley, pp. 24, 164, ISBN 978-0470227541

Strativity Group (2009), 2009 Global Customer Experience Management Benchmark Study, Strativity Group, Inc.

Peppers, Don and Rogers, Martha; Don Peppers, Martha Rogers (2005), Return on Customer, Doubleday, division of random House, Inc., ISBN 0-385-51030-6

Shaun Smith and Joe Wheeler.; Shaun Smith, Joe Wheeler (2002), Managing the Customer Experience: Turning customers into advocates, Financial Times Press, ISBN 978-0273661955

Rae, Jeananne (2006-11-27). "The Importance of Great Customer Experiences". Business Week.

Bernd H. Schmitt.; Bernd H. Schmitt (2003), Customer Experience Management: A Revolutionary Approach to Connecting with Your Customers, Wiley; 1 edition, ISBN 0-4712-3774-4

Lopez, Maribel D. (2007-11-12). "Operators Thrive by Building and Enabling Experiences". Forrester.

Monday, May 02, 2011

Adobe MAX 2011

The new site for Adobe MAX 2011 is now live at http://max.adobe.com/.  You can already register and will get a substantial break by doing so this early in the game. The early bird pricing ends July, 2011.

Adobe MAX awards:

If you have done something really cool in the last year using Adobe technology, consider applying for an Adobe MAX award.  The MAX Awards provide an opportunity to gain industry visibility for you or your clients' projects. The contest will open on Wednesday, June 1, 2011 and close on Friday, July 29, 2011, at noon (Pacific Time).

The categories for 2011 are: Advertising and Branding, Digital Publishing, Enterprise, and Entertainment. Finalists are selected in each category by the Adobe Judging Councils. The top three finalists in each category will be invited to showcase their work prior to and during MAX 2011 to support online voting for the category winners. Online voting will open one week prior to MAX, and the category winners will be announced live at MAX. Award entrants are also eligible for Honorable Mention recognition.

The information you provide in your MAX Awards application will be used internally by Adobe for purposes of judging the awards and may be reproduced, publicly displayed, or used in press releases by or for Adobe for the sole purpose of promoting the MAX event and MAX Awards. Your contact information will be used by Adobe only and will not be distributed or shared.

There is also a Community Pavilion this year again.

Community Lounge

The Community Lounge offers a comfortable forum where designers, developers, and others in the Adobe community can mingle with peers, share ideas, and network. This is your opportunity to spend one-on-one time with these product experts.
Unconference discussions

Unconference discussions are participant-driven presentations and discussions centered on a theme that are open to all. Attendees have the opportunity to sign up and present on topics of their choice. Last year these discussions were very popular. From project post-mortems to open panels, these discussions provide an opportunity for sharing and receiving information and connecting with your community. Multiple discussion themes similar to last year are in planning stages — stay tuned for more details on the Unconference discussions.
MAX Playground

Hang out in the MAX Playground and try your hand at the latest video games. If you prefer classic games, check out the retro area featuring cool games from the past.

I'll be there!  See you there!

Thursday, April 21, 2011

What is Customer Experience Management?

Customer Experience (CX a.k.a CEM) is the sum of all experiences a customer has with a supplier of goods or services, over the lifecycle of their relationship. This covers several phases including awareness, discovery, attraction, interaction, transaction, use, service, cultivation and advocacy.
These are not simply sequential, but rather a continuum of phases existing within the context of CX.

CX is not something you just bolt on to your existing enterprise architecture.


So why does CEM/CX matter? The simple answer is for retention of your existing business customers. Your competition is a click away and studies show people are 3 times more likely to tell others about a bad experience than a good one.  People declaring a bad experience with you are ripe for your competition to steal.
With social media, bad CX stories can escalate virally and ruin the reputation of a business in weeks or even days.  People notice BAD experiences and get emotional!  They want a good customer experience.






Wednesday, April 20, 2011

Adobe Resource Synchronizer CS5.5

Yesterday I installed the 5.5 version of Creative Suite Master Collection. To my dismay, there was no 5.5. version of Soundbooth, which I had uninstalled as per the instructions. To recap, on Mac OS X it is very important to use the Uninstall feature for earlier versions of CS instead of merely dragging them into the trash.

After installing CS 5.5, I grabbed the media to re-install the previous version of Soundbooth (CS 5), which I use regularly for Duane's World. During the installation, an error message came up stating something like "Unable to continue - close the following applications: AdobeResourceSynchronizer". I searched for a while and did not find any application with such a name but did find the process.

If you run across this issue on a Mac, launch the "Activity Monitor" (it is under /Applications/Utilities/Activity Monitor.app). By default, the activity Monitor will only show Active Processes and you will not see the AdobeResourceSynchronizer. In order to stop it, you have to select "All Processes: (Step 1 below), then highlight the process "AdobeResourceSynchronizer" and then hit Quit Process (Step 3 below).


After that you should be able to resume the installation of Soundbooth.  When done, restart your Mac and the AdobeResourceSynchronizer will heal its wounds and restart.

Tuesday, April 19, 2011

Flash and the City - NYC Better than Ever!


This year once again I will be speaking at Flash and the City in New York, June 9-12.  This year I will be teaching a 6-hour hands on code camp for anyone wanting to become a Flex or AIR developer.  

The event website is here.  Please register early to ensure you get a space.
In addition, Flash and the City will be part of Internet Week NY, a very popular and highly marketed festival that attracts citywide attention. Internet Week is a week-long festival of events celebrating New York's thriving Internet industry and community.   Internet Week New York is presented by the International Academy of Digital Arts and Sciences in cooperation with the City of New York and The Mayor's Office of Media and Entertainment.


Monday, April 18, 2011

Extending LiveCycle ES 2.5 for Java Developers

The full courseware that Scott MacDonald, Gary Gilchrist and I delivered during MAX 2010 is now available online.  Anyone may use this material as a self-paced tutorial to understand how Java Developers can extend the native capabilities of Adobe LiveCycle ES.

The course is available as a ZIP file here (right-click and then select Save target as ...")

http://www.web2open.org/courses/LCES4JavaDevs-CourseArchive.zip

This course covers the following topics:

Extending LiveCycle ES for Java Developers

TABLE OF CONTENTS
OVERVIEW
EXERCISE 1: UNDERSTANDING CUSTOM COMPONENTS

EXERCISE 2: DEVELOPING THE CUSTOM COMPONENT .
Task 2‐1: Start Eclipse and create a new project
Task 2‐2: Add the required Java library files
Task 2‐3: Defining the service interface
Task 2‐4: Defining the service implementation
Task 2‐5: Defining the component XML file

EXERCISE 3: DEPLOYING YOUR COMPONENT
Task 3‐1: Package your component into a JAR file
Task 3‐2: Importing the component using Workbench ES2

EXERCISE 4: USING THE COMPONENT WITHIN A PROCESS
Task 4‐1: Create the EncryptManyDocuments/EncryptManyDocuments process and invoke it from
Workbench.
Task 4‐2: Programmatically invoking the EncryptManyDocuments process.

Solution code is provided as well as extra notes on the code for the programmatic invocation: 

Friday, April 15, 2011

New Open Source Mobile Application

This mobile application demonstrates how to retrieve XML data from a server, return the results, and work with the data objects and display them.  There will be a video posted on this blog post very shortly with the instructions for building it along with best practices.  In the meantime, you may download the source code directly from http://www.web2open.org/adc/XMLService.fxp (On a PC, right click and select "Save link as..."; on a MAC, control-click and select "Save link as...").

Now for some words of caution.  First, loading XML into a mobile application is generally a bad idea.  It is far better to use AMF with a 3-tier architecture (hello LiveCycle Data Services!!).  Nevertheless, small XML files can be worked with in this manner!  Enjoy.

Tuesday, April 12, 2011

One Most Excellent book on Ontology Science

It is a pleasure to be able to write to announce what I consider to be the premier book on
the Suggested Upper Merged Ontology (SUMO).  I also wrote the forward for this book and thought I would share it via this blog.  This is a great practical guide to applied ontology projects. Click on the book to see the TOC and to purchase!



Normally within the forward of a book,  writers use generic terms like “fascinating” and
“intriguing” coupled with an array of positive compliments. After all,
the purpose of a good introduction is to set the stage for the reader in
a manner that the reader is highly motivated to read the rest of the
book. While tempted to follow this scripted behavior, I found myself
wanting to take an alternative route for the forward.

Before talking about the book itself, I would like to introduce the
author. My first personal experience with Adam Pease was at an industry
event around 2003 where we sat together on a panel and discussed the
impact of semantics on various industry standards. I was intrigued by
Adam’s knowledge and his enthusiasm to share with others yet there was
something else that made him easy to listen to. He carried with him
wisdom, yet he did not force it upon those in the room. He merely
revealed the knowledge, bit by bit, as the conversation allowed it to
enter. This is very unique in a computer science discipline where
zealotry prevails. He modestly imparted his opinions on the roomful of
people only to the degree it answered the specific question before. This
inevitably brought up another question that Adam usually had an answer
for too.


The result of this behavior was quite infectious. Adam, Kurt Conrad and
I ended up in a late night sushi restaurant somewhere near Menlo Park,
CA discussing how to map SUMO concepts to Mandarin, Japanese and
Cantonese, how WordNet can reference SUMO and why First Order Logic
(FOL) constraints are generally a cool concept to have in advanced
computer systems. An upper-level ontology, such as SUMO, is a common,
shared conceptualization of a domain. SUMO itself, being an upper
ontology, conceptualizes our existence in our three dimensional,
sequentially temporal lives largely bound by gravity upon one major axis
(I think the geographical and geo-spatial extensions to SUMO actually
acknowledge the moon’s secondary axis of gravity which can be seen
manifesting itself as tidal behavior in large bodies of water). During
this discussion, the simple and beautiful truth came to me. SUMO, or
something akin to it, is one of the missing pieces of a large segment of
technical work I have done in my life. If it had been explained any
differently, I would have missed it. Adam’s delivery was the key for
understanding and seeing the value in ontology work. This missing piece,
the shared conceptualization, was the cause of many a failure to design
a proper XML dialects or the resultant mess the old Electronic Data
Interchange (EDI) formats represented. It was not specifically the SUMO
format that was lacking, it was the general lack of an upper ontology
that could provide the basis for mid level ontologies and other domain
specific metadata dictionaries or lexicons.


Up to that point, I had largely worked as a software systems architect
who inevitably ended up dealing with the meaning of some XML dialect.
Defining XML dialects for just about everything under the sun had been a
relatively popular activity in our industry for the 5 or 6 years leading
up to my meeting with Adam. During the entire time I had been in
standards meetings either creating a dialect, analyzing someone else’s
or thinking about software that could work with it, I had never seen
anyone approach the problems from a place of a common shared
conceptualization of the domain prior to embarking on writing the
language. In retrospect, the advent of XML has both benefited humanity
as well as stifling it by allowing people to create specific XML based
languages who could instead benefit from the discipline required to do
the formal modeling work using an upper ontology.


Before my work at Adobe, I had founded such a company, XML Global
Technologies, in 1997. This company proceeded to work with a wide
variety of XML languages and it was evident that reconciling the
semantics between data elements of those languages was a monumental
task. When XML Global was acquired by the Xenos Group in 2003, some of
the original founders and I began a new company called Yellow Dragon
Software in Vancouver, British Columbia. This company had a metadata
registry-repository where we attempted to work again on the
reconciliation of disparate semantics in XML languages. This effort was
Herculean and the need for an ontology was apparent. SUMO was the
logical choice due to its compact size and the fact it has been reviewed
and tested by multiple experts. When Yellow Dragon was acquired by Adobe
Systems in late 2003, I went to work for Adobe (where I still work today!) and have been able to
continue my research into ontology, semantics and enterprise
architecture in that capacity. SUMO has given me the basics for seeing
logic in a multitude of applications and the gaps where software vendors
like Adobe can benefit from the adoption of an upper ontology. Adobe’s
XMP (XML Metadata Platform) is in fact extendible by nature and could
embrace SUMO at some future stage. This is but one example of the
application of SUMO that would potentially be then used by those who
work with common software applications such as Acrobat and Photoshop.


SUMO gives those who use data modeling techniques a common footing to
stand on before they undertake their tasks. It provides a level setting
for our existence and sets up the framework on which we can do much more
meaningful work. SUMO provides order for one level of our chaos.


In 2008 I finished writing a book for O’Reilly Media on Web 2.0
Design Patterns with co-authors James Governor and Dion Hinchcliffe. We
wrote some material about the impact of semantics and ontology within
that book. One such part discussed the phenomena of folksonomy, a loose
and informal set of declarations about resources using largely natural
language tags. While professors and other academic types toil in the
abstract world of ontology, the general population races to set tags to
things. While not a formal approach to creating a semantic web, it has
seemed to work well amongst the multitude of sites implementing the
Collaborative Tagging (folksonomy) pattern


We felt that SUMO could potentially offer a huge amount of guidance to
folksonomies. Imagine folksonomies coupled to an upper-level ontology to
classify tag terms that represent multiple concepts? By mapping SUMO to
terms in WordNet, ambiguities are avoided in cases where words have
multiple meanings. Imagine searching for the term Washington. You would
get results for George Washington (a president), Denzel Washington (an
actor), Washington, DC (a city), the Washington Monument (a large
monument), Washington State University (a school), and more. If
folksonomies can be mapped in a similar manner it might be a valuable
mechanism to advancing semantic web interests. Of course, disambiguation
is only one of the benefits of using SUMO and there are hundreds of
other applications that can embrace it.


Now that I have covered the bases, it is time to bring about the
compliments for the book.  This is going to be short by contrast!


Chances are if you’ve already picked up this book, you have an immense
interest in the topic. This book represents the finest body of knowledge
on SUMO and will be a valuable reference for decades to come. It is a
pleasure to be chosen to introduce the book and it will remain one of my
nearest reference materials while I continue to work in the field of
computer science. I hope you share this view and become involved in the
official SUMO list server (at http://sigmakee.sourceforge.net) where
discussions on SUMO continue. Enjoy the book and keep it nearby for
reference for once you have crossed the chasm of knowledge, you will
start relating everything to ontological terms.

My final word?  If you are interested in this subject matter, you owe it to yourself to pick up a copy of the book and consider the sheer genius of Adam Pease.  You will not be disappointed.

Friday, April 08, 2011

Security Breach!

Today, I applaud Marriott for sending a notice that stated:


Dear Marriott Customer, 

"We were recently notified by Epsilon, a marketing vendor used by Marriott International, Inc. to manage customer emails, that an unauthorized third party gained access to a number of Epsilon's accounts including Marriott's email list. 

In all likelihood, this will not impact you. However, we recommend that you continue to be on the alert for spam emails requesting personal or sensitive information. Please understand and be assured that Marriott does not send emails requesting customers to verify personal information. 

We take your privacy very seriously. Marriott has a long-standing commitment to protecting the privacy of the personal information that our guests entrust to us. We regret this has taken place and apologize for any inconvenience."

Data breaches are inevitable.  This was not Marriott but a third party used by them.  I applaud Marriott for being timely and honest with their news.  This is what I call good customer service.  I will continue to use Marriott.  In fact, I just left one this morning in Mexico City and have another one booked for next month.


Monday, April 04, 2011

Flex Mobile Development - Transform Gestures

The example code below provides a quick look at how to register an event handler for TransformGestureEvent.TRANSFORM_ZOOM.

Line 11 adds the event listener to the BorderContainer (line 41).  The Transform event is passed to the onZoom function on line 14, which has a member variable of type Sprite.  By reading the scale of the event's scaleY property, you can enforce a minimum size as shown by the if-else statement on lines 17-26 and assign the new values.  Note that the minimum scale size this can go to is 1.  This is to prevent users from scaling the Sprite too small to place both fingers on it to zoom again.

The code may be downloaded from here.  You will need Flash Builder 4 and AIR 2.5 or later to run this.


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.