Thursday, December 23, 2010

The new Flex Hero 4.5 SDK has great features and the architecture for mobile applications is very cool. Working with it over the last few months has also taught me a couple of coding hacks to share. First let's look at how it works.

A Flex Mobile application is composed of a minimum of three files. The first is the main entry point into the application, which has two main content areas. The top content area (shown below in green) may contain three content areas. These are Navigation content, Title content, and Action content. Note that these are optional and some applications might use different navigation schemes such as creating a Vector of Spark Navigators.

The gray area below the title is the main content area of an application. This is controlled by the navigator(s).

When you set up a new Mobile application, the minimum three files are the main entry point, the first default Home or First View, and the Application Descriptor. The descriptor file has the same basic purpose as in previous versions of AIR except it has been extended to declare Android manifests and other items. The graphic below depicts a larger project and shows some of the main components of a mobile application.

When you launch a mobile Flex application, the first view may be declared within the entry point to the application. In the example above, MobileFileBrowser.mxml has a single declaration that points to MobileFlexBrowserHome.mxml. This is declared in line 5 of Code Sample 1 below.

Code Sample 1

Line 6 shows a great trick. Mobile applications may take a while to initialize and providing user feedback during that time is sometimes useful. The splashScreenImage shows up when the application launches to let the user know the app is initializing.

The Home view in this case contains a list and has a service call linked to it to reach out and grab an RSS feed from slashdot.org. The service call (getData()) is initiated on an event called "viewActivate", which is fired when as the view becomes active. When a user gets this view, they may select an item from the list and the view navigator will then pass the data object to a new view and instantiate the new view. In this example, the RSS item is passed and details are shown in the new view. If the user wishes to navigate backwards, they simply use the back button. The code for this is written as pushView(View, Data) and popView().

Here is an important tip! Consider what happens in a mobile scenario when the user examines several different RSS items and navigates backwards to the main list. When the new view is active, the old view does not persist by default so a new service call must be performed every time the list view is shown. If you link your service call up to the viewActive event as shown below on line 5 of Code Sample 2, your application will make the service call each time the view becomes active.

Code Sample 2

Needless to state, in many situations, this is architecturally really bad as it will eat up both bandwidth and battery/CPU life. Luckily, this problem can be rectified with a single declaration. The better way is to not call the service based on a viewActivate event and instead allow the user to trigger it with a button or use the applicationInitialize event. Once you do this, you can simply add the declaration that the destructionPolicy is none as shown below in line 7 of the code snippet. If you download the current source code from part one of this tutorial, note that this has not yet been done and is being slated for part 2.

Code Sample 3

Now let's consider another way you can allow users to navigate through your application. The Slashdot RSS reader application has an information view. To access the information view, the call is made directly from the action content area.

When the user clicks the information icon, a call is made through the navigator.activeView object as shown in code samples 4 (below) and 2 above.

Code Sample 4

Note that on line 29 of code sample 4, the call is made to the public function on line 19 of code sample 2. This function only requests that the navigator push the information view, in this case with no accompanying data. Since the information view will also have the info icon in the parent container, it too must contain the showInfo() function or an error will be thrown. If you wrote the function exactly the same as in the other views, it could lead to a recursive problem. If the user keeps hitting the information icon, new info views get created and activated. If the user hits the icon 25 times, they would have to hit the back button 25 times to return.

There are two ways to keep the view from being pushed more than once. On line 10 of the code sample below is the function that gets called when a user clicks on the information icon. Line 12 sets up a regular expression that will detect if the current view is the "InfoView".

Code Sample 5

Note that there is a "\d*" within the regular expression. If you add a line of code to trace the name of the currently active view, the console will show that the runtime appends some numbers to the end of the name as shown below.

Essentially the regular expression can detect if the activeView is already the InfoView and prevent it from creating another instance of itself.

The problem with this approach is that over time it becomes unmanageable. A far better way to prevent this is to simply make the showInfo() function in the information view do nothing as shown on lines 8-11 of Code Sample 6 below. Note that if you do not have the showInfo function in the info view, an error will be thrown when the user hits the icon.

Code Sample 6

This is a far better way to handle the problem.

Well, that is all for now. A video tutorial will be out shortly to summarize some of these lessons and the source code for the RSS Reader will also be released.

Tuesday, December 21, 2010

I guess people are worried that our state of the art igloo geometric designs, dogsled aerodymanics and maple syrup chemistry are in danger if poltical decisions are made without the benefit of science. Luckily there are only 78 of us in the whole country. We can probably sort it out in about a fortnight over a few Molson's beers while watching ice hockey. duane "Who won the damn gold medals at the last Olympics anyways?"
--
"Question everything, including this!" - http://technoracle.blogspot.com/

Because there are lots of us who work at Adobe who have been very vocal internally about ensuring that Linux is a first class O/S and released at the same time as the other O/S's. That is why Linux is getting the 64 bit Flash Player. More and more of us are using Ubuntu and RHEL on the server (our enterprise ESB uses RHEL/(WebSphere || Weblogic || JBoss) as a reference implementation!). Now if we could only talk our bosses into CS5 for Linux.....

You could say you are also forced to use a browser then. You have a choice. If you want to see certain sites in their entirety, you can choose flash. If you want to experience only the text, use wget. If you want to see something in between, use a browser. your choice. There are still some old guys who don't even like to load images and only read the alt text. Can't make everyone happy so giving people choice is the only path we can take.

you are right. The way Flash (the swf format only, not the whole platform) was written circa 2003, it wasn't optimized to go to mobile devices. There were some issues and technical hurdles to get around. Some of them were simple (like stopping FP instances that are not in the visible part of the screen) or simply reducing the frame rates of flash applications that are using battery power when they are not in focus). Some required much more thinking such as form fields receiving focus when the tab is hit from an HTML form element above a flash form element). To scale to mobile was a challenge which has been met with the Flash PLayer 10.1. The Google Nexus 1 phone (which I own) does a great job of running the full version of Flash (not Flash Lite). The FP 10.1 has *huge* technical improvements from previous versions Adobe is full on excited about HTML 5 too. There are some really cool possibilities about using HTML 5 features side by side with Flash. Serge Jespers did a great job of showing this on his blog late last week: http://www.webkitchen.be/2010/03/05/the-html5-flash-marriage-geolocation/ [webkitchen.be] The fact is that HTML being updated is not something everyone asked for, but in it's execution, there are some obvious features that I am glad to see such as the Video element. I do share some concerns about how more advanced API's get implemented (such as the document.evaluate(); API) for complex XSLT processing but hope the industry will figure it out. DN

"Any technology can be used for good or for evil. The only question is how you decide to use your coding time in between "
- Gandalf

Saturday, December 18, 2010

This year my family and I decided to give gifts of hope and inspiration for the holidays. We donated $1001 towards educating, feeding and helping entire villages become self sustaining via http://www.plancanada.ca. This donation is made in the names of you, our friends and family and those who have inspired us over the years to think beyond what we need ourselves.

The gifts include a variety of items including mango trees, education materials, lifestock and home birthing kits.

Our only ask is that if you were planning on sending us a card, please use the money and effort, no matter how minute, to help those less fortunate instead. We have everything we need and are truly blessed!

This post will sum up a new AIR for Android tutorial I have been working on. The video will explain everything (will be posted shortly). The project is an RSS reader for Android mobile devices. I chose Slashdot (News for Nerds. Stuff that Matters!) and used their RSS feed from this URL. The end result was a functioning mobile application that installed and worked on both the Google Nexus One phone and the Samsung Galaxy Tab. There are some lessons to be learned though as you will see from the video.

Tuesday, December 07, 2010

I've been asked a lot lately about the Molehill project. "Molehill" is an internal Adobe code name for a set of low-level, GPU-accelerated 3D APIs we announced at MAX 2010 (another reason never to miss Adobe MAX)! The new Molehill APIs enable advanced 3D experiences across screens through the Flash runtimes and allow developers to leverage GPU hardware acceleration for significant performance gains.

How it works today in Flash Player 10.1

Flash Player 10.1 renders thousands of non z-buffered triangles at approximately 30 Hz. For true 3D, z-buffering is required. This refers to the management of image depth coordinates in three-dimensional (3-D) graphics models. It is very difficult to accomplish in real time due to the immense processing power required. Unlike X and Y coordinates where there is a physical boundary, Z coordinates can extend infinitely, although the range of human eye perception is somewhat limited.

You can spoof 3D effects today using the Flex attributes "rotationX, rotationY and rotationZ". Here is a project I made using a simple photo that moves it in 3 axis based on user input. This is not true 3D however.

The source code for this project:

The Adobe website on Molehill states: "With the new 3D APIs, developers can expect hundreds of thousands of z-buffered triangles to be rendered at HD resolution in full screen at around 60 Hz. Using the new 3D APIs in Flash Player and AIR will make it possible to deliver sophisticated 3D experiences across almost every computer and device connected to the Internet.

The 3D capabilities enabled by the new APIs will also be available to the broader developer community through popular ActionScript® 3D frameworks, such as Alternativa3D, Away3d, Flare3D, Sophie3D or Yogurt3D."

Probably the single best description is from Thibault's video embedded below. I cannot wait to get my hands on the technology!

"Market requires that the certificate used to sign the apk be valid until at least October 22, 2033. Create a new certificate."

This is a requirement which I had overlooked. By default, creating a certificate via Flash Builder (File > Export > Release Build) will not work as it is not valid for the length required by the Android Marketplace.

I set out to make a proper certificate however there was not a lot of very current information available. After a lot of searching, I found the answer right in front of me. Using the AIR 2.5 SDK, you can create a self signed certificate using the line command tool. If you have the same issue, follow these instructions:

Now enter the command "dir" (Windows) or "ls" (Linux || Unix) and you should see your certificate. A screenshot is below.

That's pretty much it. You can use this to sign your applications in a variety of ways, depending on which development tools you use. For Adobe Flash Builder 4.5, you can reference this certificate during the release process as shown below.

Thursday, December 02, 2010

Yesterday I made a post about my experiences with the new Flash Builder 4.5 and 4.1 IDEs while developing mobile applications. Today, we follow this up with a video to illustrate some of the key points you'll need to get started.

Wednesday, December 01, 2010

Today I am releasing a set of two applications, one built using the Flex 4.1 SDK and one built using the Flex 4.5 SDK (Burrito version of Flash Builder using the "Hero" framework). Although the base application is essentially the same, the differences are astounding in terms of development ease and performance.

The project itself is a simple project to demonstrate how to read/write to a file system. The application is named LetMeC (“let me see”). The screenshot below is of the application built using Flash Builder 4.01 overlaid with the AIR 2.5 SDK. This one uses the FileSystemDataGrid component and has several helper classes. The source code for the AIR 2.5 project is available here:

Note that the installed sizes of the applications vary. The first one is larger even though I never used any graphics for icons, splash screens or other bits. The Flash Builder 4.5 Burrito application has a larger installer, however on the Google Nexus 1 disk, the installed application is only 768 kb, of which roughly 398 kb is images alone coupled with 230 kb of icons! The Hero framework rocks! Here is a screenshot.

The differences in development are vast and I am definitely favoring the direction Adobe is running towards with respect to the Hero framework. Mobile development in Flash Builder 4.5 is much easier. For starters, there is a notion of "views" and features such as screen orientation are supported. The first thing you will notice is that the list of components is greatly reduced. The version of this I built using 4.1 used the component. This component by itself is very heavy weight (it is still MX or Halo qualified, not Spark). The scroll bars are difficult to use as the hit area on a touch screen is very small. Also the orientation is something you have to do manually if you want your application to resize and reorient when the phone is tilted.

One item that works well on PC, Mac, and Linux is AIR’s “openWithDefaultApplication()” method. No such luck on Android as the architecture uses a notion of “intents”. It is easy to write code to access the functionality rather than accessing the notion of a "file". One line of code will open up an SMS, URL, or even phone someone. As the code samples from James Ward illustrate below:

Last thoughts? I am now addicted to mobile development! Adobe Flash Builder 4.5 rocks (even though it is a preview and somewhat "beta"). The most beautiful thing is that I can use 95% of my code for a desktop application too.

Thursday, November 25, 2010

Infonex only recently asked me to chair the event in Ottawa this week; however, I am very glad I had the opportunity to do so. A special shout out to Philippe Renoir (@philipperenoir) who jumped in to co-chair the event. Almost every speaker had a good message or some important lessons to impart.

Usability - industrial media production typically requires specialized skills. Most social media sites do not. Some define new skills, so anyone can operate the means of production.

Concurrency/Speed - the time lag by conventional media = long. Social media is virtually instantaneous responses; participants determine any delay in response).

Mutability - industrial media, once created, cannot be changed easily, whereas social media can be altered almost instantaneously by comments or editing. Newspapers are technically out of date the moment they leave the press and any notes scribbled on them are not seen by all readers.

Uncontrollable – no central point of control.

Measurable - unlike normal media you can determine who has spent time ingesting your message (not true for all forms of media)

Here is a quick summary of some of the messages I heard about public sector social media:

Look before you leap: Before starting on a social media project, take the time to understand what you are getting into. Use experience (yes - consultants) if required.

Realize that is it better to be part of the conversation than being defined by it! Some people had issues with risk adverse managers who insisted that somehow the conversations in social media being negative to them are not happening. Be part of the conversation and help your community.

Determine whose voice you are talking with. Are you talking for your department in an official capacity or are you a person who is sharing personal experiences?

Conduct you social media campaigns with a strong ethics policy. Identify yourself if commenting on a subject you are part of. Disclose conflicts of interest. Be authentic (thanks @philipperenoir!)

Be accountable. Set a clear and consistent policy for communications and ensure it is regularly reviewed. This also prevents potential issues if employees are dismissed for non-adherence.

Ensure everyone in your government department buys in. Make sure they have knowledge of the policy mentioned above and have a chance to provide input.

Have clear, concise goals and metrics to judge your goals. Understand what you are attempting to do and use the social media networks wisely.

Don’t build it yourself! Your chances of attracting a critical mass on your own platform are probably fairly small. Using existing platforms is likely a better path (if possible).

Start with baby steps. Small manageable projects to start with will probably have better results.

Don’t try to control social media! You cannot and trying to do so will be like pouring gasoline on a fire.

All these are of course nonexclusive and perceived with my own filter! Your actual mileage may vary. Please comment if I missed something.

Monday, November 22, 2010

This is an interview I did in Los Angeles during the Adobe MAX event. From the description:

"In this interview, we cover a wide range of topics with Adobe's Duane Nickull during the Adobe MAX 2010 conference. Nickull looks at the state of the mobile web, HTML5 and it's role at Adobe, Flash Builder and the ease of deployment to multiple form factors, PDFs and their growing utility for the enterprise, and Adobe's involvement in cloud technology."

Monday, November 15, 2010

James Ward and I collaborated and wrote a simple demo app called "Scribbler". It demonstrates some really simple concepts such as detecting screen capture and saving to the local file system on Android. This application is a regular Flex applications that uses standard Flex 4 components (Not the new Hero/Slider framework) hence demonstrating that in some cases you can use MXML to build mobile apps. The application is available now on the Google Android Marketplace. We made this lame icon with "Sp" based on an indecisive moment of what to call the damn app. If you end up having to explain it to someone say SP stands for "Sribbler Pad".

The full source code is downloadable from here. Have fun with it! Please tweet this (button is below) if you think others might like it. More to follow if we are encouraged properly!

Thursday, November 11, 2010

I've heard many people tell our team that they would love to be on the evangelism team. It sort of sounds glamorous and full of adventure. This is half of the truth. The adventure is there but the downside is complete chaos. When my friends hear my schedule they get visions of me sitting around a sunny terrace in Southern Italy casually sipping a chilled pinot gris while relaxing. Below is the reality. I have removed various names to protect the identity of those who I meet with but this leaves you with the impression.

Thursday, November 04, 2010

In the first AIR for Android tutorial, we showed just how to get started. This tutorial is a complete video along with the source code. This blog post includes the necessary instructions for building your first application and then adding a transform gesture. With many smartphones using touch screens, the desired behavior is to allow an application to scale upwards but never scale below a certain minimum size. This tutorial and the accompanying source code or Flash Builder 4.1 project explain how to accomplish this task.

2.Using finder, copy the SWF and the app descriptor from the Flash Builder /bin-debug folder of your workspace over to the SDK. (N.B. SDK must be the same version!)

3.In the terminal, type in the following. You will need a PKCS12 certificate set up to do this and modify the path to point at your certificate. The next parameter is the name of the output *.apk (in this example "Android-REST.apk") following by parameters of the XML descriptor and the main swf file.

Monday, November 01, 2010

I have just received word that I'll be back to next year's Flash and the City event in New York. Event organizers have found a larger venue for the event and have expanded the length to include some half day workshops. The goal is to repeat the MAX AIR 2 Code Camp in one of these time slots. This is a course that ended up being ranked very well including a score of 4.96/5 with 70 evaluations.

Friday, October 29, 2010

This is a video of our antics during the day 2 keynote. I had never seen the TV show "Pimp my Automobile" before so I had no idea what the script was getting at in terms of slang. Paul, Ming, Lee and I put this together in 4 days with minimal rehearsal and an ever changing script. This was fun and I love my co-actors!

Saturday, October 23, 2010

Find me at Adobe MAX, have your photo taken with me and win tons of really cool prizes!

That's correct. The “I’m With Adobe CEM” photo contest is simple. Find me at MAX. I’ll be carrying a sign that says “I’m With Adobe CEM.” Take your photo with me and tweet the pic to our @AdobeCEM Twitter handle to be entered to win. Full details are here.

If you find me, you can also get one of 99 exclusive LiveCycle ES Developer tattoos! All you have to do is show me you're registered for at least one LiveCycle ES session and say the magic passphrase. If you don't know the passphrase, you may have to do some searching. It is linked to the outcome of the best hockey game ever, the 2010 Olympic finals between Canada and the USA!

Wednesday, October 20, 2010

I just got word from my good friend Pratima Rao that she will be speaking on a pivotal session at Adobe MAX this year. Pratima has god-like intelligence and has been leading a Flex project at VMWare for the VMWare View product. This advanced project required some really state of the art technology and new management console work. The real world experience sessions like the one she will deliver are my favorite type of sessions at MAX as they give the opportunity to ask questions about what went right and what could have been done better. Real world use of Flex in a critical enterprise setting is something that is now becoming more popular and this session should provide some great insights.

Here is the session (highly recommended on my list):

Title: The New Standard for VMware Management Consoles
Description: Flex is already in use in two VMware applications in the VMware management suite: VMware View (which delivers personalized virtual desktops as a managed service) and VMware vCloud Director (which enables provisioning, deploying, and managing virtualized workloads in internal and external clouds). Moving forward, the Flex footprint expands into VMware's broad customer base with its next-generation management console for vSphere. VMware's 25,000-plus strong partner and customer ecosystems will soon be able to leverage Flex to integrate their solutions into the VMware management UIs. Join the VMWare team to hear about how they use Flex to improve VMware product experiences.

Monday, October 18, 2010

Last weekend I taught two sessions at the Silicon Valley Code Camp in Sunnyvale, CA. One of the sessions was on cloud computing called "Manipulating PDF with Java on the Cloud: For fun and profit!". The slide deck is available to anyone who wants to have it. Please email me if you wish to get it.

The slide deck was not the main part however. Here are the steps required to repeat the code camp.

1. First, you have to have an instance of LiveCycle ES2 up and running on the cloud. Adobe has this all bundled up for you and if you are a member of the Adobe Enterprise Developer Program (AEDP), you have ten free hours per month (YAMMV). You can also set up another cloud account and install it yourself. I've looked around and found some cloud accounts that seem to be good for this. See the note at the end of this post for more details.

2. Log in to the cloud and start your instance.

3. Press the start instance button. When your instance is up and running, there are two methods to use to connect. The easiest is to download and install the Developer Express Desktop network client. This simply intercepts all traffic bound for localhost (http://127.0.0.1) on port 8080 and redirects it to the cloud. The second methods is to use the public URL for the cloud instance. Either way is fine.

Note: the rest of this tutorial will assume you are using the network desktop client.

4. If using the LiveCycle Desktop networking application, log in with the same credentials you used to log into the cloud.

5. Start up Eclipse and start a new Java project. Within your project, add a new package, then add a Java class called "CreatePDF".

6. You will need several core Java libs from the LiveCycle ES install. These are located under the /sdks directory. For this example, you will need the following *.jars:

adobe-encryption-client.jar

adobe-livecycle-client.jar

adobe-usermanager-client.jarThese JAR files are located in the following path: {install directory}/LiveCycle/LiveCycle_ES_SDK/client-libs/common

adobe-utilities.jar This file is located in the following path:{install directory}/LiveCycle/LiveCycle_ES_SDK/client-libs/jboss

jbossall-client.jar This file is located in the following path:{install directory}/LiveCycle/jboss/client
(Use a different JAR file if LiveCycle ES is not deployed on JBoss.)

You will also need the third-party JAR files to use the SOAP stack rather than EJB endpoints. If you want to invoke a remote LiveCycle ES instance and there is a firewall between the client application and LiveCycle ES, then it is recommended that you use the SOAP mode. When using the SOAP mode, you have to include additional JAR files located in the following path:

{install directory}/LiveCycle/LiveCycle_ES_SDK/client-libs/thirdparty

Within your class, you should see some skeleton code under your new project. Highlight all code, delete it and replace the deleted skeleton code with this source code:

Be sure to replace the package name, class name and paths with your own.

7. Now compile your class and run it. When Eclipse runs this, it should try to hit 127.0.0.1:8080 to make the request. This will be intercepted by the desktop networking client and forwarded to the cloud instance where the invocation request will be fulfilled. When completed, you should find a new instance of a PDF document under the path you used at the end of this code!

We've also been doing some research into cloud computing providers. While Adobe uses The Amazon cloud for various reasons (including legal, compliance, support and technical), We've found some hidden gems. After testing a few, we found the best VPS Cloud Hosting at sherweb.com. Regardless of where you go for cloud hosting, this tutorial should work fine once you get Livecycle ES up and running.

This will be the last blog post before Adobe MAX 2010. Every week Technoracle has been picking a new LiveCycle ES session and promoting it as the "Pick of the Week". Unfortunately, this approach hasn't really done justice to the entire slate of LiveCycle related topics available at MAX this year. As a result, we are publishing the remaining sessions below.

Again, if you have never been to MAX, please consider it as a place where your tech skills get an annual boost, where really cool new stuff can be learned, and where we share the latest news. See you there in 5 days!

Join author J.P. Terry for a hands-on lab covering advanced form design techniques and his latest tips and tricks. For instance, you'll learn how to add an auto-completion feature to a PDF form that provides relevant suggestions as the user...

Join product experts and learn how to build an enterprise composite application using Adobe LiveCycle Mosaic ES. Discover how to assemble and integrate multiple enterprise applications on the client side while ensuring user interface integrity of your enterprise look and...

Get an introduction to Adobe application modeling technology, and learn how to define a single data model that can be leveraged by multiple form types, including PDF forms and forms created in Flash. Attendees will learn how to build a...

Learn about the client-side architecture of the Adobe LiveCycle Collaboration Service development model, which enables peer-to-peer, collaborative apps with Flex and Adobe AIR. See how to structure your Flex apps to enable synchronized, multiuser participation, complete with rich audio/video communication...

Learn how Deloitte Consulting has leveraged the Adobe Flash Platform and Adobe LiveCycle Enterprise Suite to develop highly repeatable solutions for citizen engagement management at state and federal government agencies. By attending this session, you'll find out how Deloitte has...

Join product experts and others as we work through the process of creating a Plain Old Java Object (POJO) that will be packaged and deployed to the Adobe LiveCycle Enterprise Suite service container as a custom component. Once your component...

Hear top design professionals explain how to unlock new value hidden in complex enterprise systems through the expression of user-centric goals in design patterns. You'll learn how Adobe is converging solutions, platforms, and tools to help you better serve your...

Hear from Adobe insiders and learn about the hidden gems and community resources that can help you build, share, and leverage the LiveCycle Enterprise Suite developer ecosystem. This session will review the Adobe Developer Connection program, the latest Adobe forums,...

Find out how Northwestern Mutual improved customer service in its Service Request Center by leveraging Adobe LiveCycle Enterprise Suite and other integrated technologies. By intelligently providing access only to those forms applicable to a specific contract, the financial services company...

Learn how to take advantage of the built-in hooks between Flex and Adobe LiveCycle ES, building a web-based, data-driven application. You'll create complex data models using the latest modeling elements and exchange data between Flex and LiveCycle via built-in LiveCycle...

Learn how Adobe has embraced Amazon EC2 to deliver a comprehensive cloud offering for Adobe LiveCycle ES2. Hear from product experts how the cloud is quickly becoming the definition of rapid application development environments, with the ability to start up...

Hear how focusing on user experience can improve the value of the enterprise applications you deliver. Also learn about architectural changes in the next release of Adobe LiveCycle Enterprise Suite as well as new features in servers, client runtimes, and...

Learn how the combination of Day's leading web solutions and Adobe's enterprise portfolio provides a unique opportunity to developers: a unified web content and application delivery platform. By introducing web content management, digital asset management, and social collaboration to Adobe’s...

Explore the innovation in PDF and Adobe Flash and how these two technologies converge to enable the next generation of correspondence. Learn how to speed up the development of a correspondence application, leveraging the new Interactive Statement Solution Accelerator within...

Hear from product experts and discover how you can extend your enterprise to iPhone, iPad, Android, Windows Mobile, and BlackBerry devices by leveraging the Adobe LiveCycle Enterprise Suite platform. The session will include best practices for integrating business processes, accessing...

Come see how the South African Revenue Service (SARS) provides improved benefits and services delivery to customers through online, automated tax filing. e@syFile is a set of Adobe AIR applications that leverage the Flash Platform and Adobe LiveCycle to enable...

Pin it!

SHARE!

If you are helped by this blog in any way, or just find the contents interesting, please give it a share to help keep me publishing. Shares help drive my advertising revenue which makes me more likely to write articles to help people in the future. Thank you in advance!