Thursday, May 10, 2007

Java One 2007 source code and slides

Java One 2007 is full on! My favorite was the helicopter but I also can't wait to start developing with the SunSpot devices. I think I am going to build a solar tracking device.

Anyways - thanks to all of you who came to my talk. I was overwhelmed with the great reception and applause and felt really humble to be appreciated by such an esteemed and knowledgable peer group. I don't use Java every day so I was happy to see all the code I wrote for you compile the first time. Felt like I dodged a bullet.

Here is the first class (DuanePDFClass2.java). You will need to download the XPAAJ.jar file to make this work. The other class is directly below. You should also know that we are moving towards the XML friendly version of PDF ("Mars") which will allow any developer to work with PDF XML formats using the XML parser in their native language. For the long term, this is a much better solution than us developing libraries for each and every programming language.

import java.io.*;
import java.util.*;
import java.awt.image.DataBuffer;
import com.adobe.pdf.*;

public class DuanePDFClass2 {
public static void main(String[] args)
throws FileNotFoundException, IOException

/* Make sure we have the correct args.length() and call PDFExtract() */

{
String inPdfName;
if(args.length != 1 )
{
System.out.println("\nCommand line format: java classname pdf-file");
return;
}
else
{
inPdfName = new String(args[0]);
PDFExtract(inPdfName);
}
}

public static void PDFExtract(String inPdfName)
throws FileNotFoundException, IOException
{
System.out.println("\nOpening PDF with DuanePDFClass2...");
PDFDocument doc = null;
boolean b = false;
FileInputStream inPdfFile = new FileInputStream(inPdfName);
try {
doc = PDFFactory.openDocument(inPdfFile);
} catch (IOException e) {
System.out.println("Error opening PDF file :" + inPdfName);
System.out.println(e);
}
if(doc == null)
System.out.println("Cannot open PDF file : " + inPdfName);
else
System.out.println( inPdfName + " was successfully opened.");

System.out.println ("Document Version = " + doc.getVersion());

System.out.println ("PDF is " + doc.getNumberOfPages() + " pages long.");

/*Save PDF to file*/
System.out.println ("\nSaving document ... ");
int j = inPdfName.lastIndexOf(".");
String outPdfName = inPdfName.substring(0, j) + "_saved_by_Duane_at_JavaOne2007" + ".pdf";

InputStream inputStream;
inputStream = doc.save();
b = false;
try {
b = saveFile(inputStream, outPdfName);
} catch (Exception e) {
System.out.println("Error saving PDF file.");
System.out.println(e);
}
if(b == true)
System.out.println ("Document was saved to file : " + outPdfName);
else
System.out.println("Document was not saved to file.");

System.out.println("\nExecution of DuanePDFClass1 has finished.");
}
/**
method to save InputStream to a file.
*/
public static boolean saveFile(InputStream is, String filePath)
throws Exception
{
boolean retVal=false;
byte[] buffer = new byte[10240];
FileOutputStream outStream = null;
try
{
outStream = new FileOutputStream(filePath);
int len=0;
while (true)
{
len = is.read(buffer);
if (len == -1)
break;
outStream.write(buffer, 0, len);
}
outStream.close();
retVal = true;
}
catch (IOException io)
{
System.out.println("Writing the array of bytes into the file "
+ filePath + " failed.");
throw new Exception(
"Writing the array of bytes into the file "+ filePath +
" failed in saveFile");
}
return retVal;
}
}


Here is the second class which casts the input stream handed off by the Document factory class into a buffered stream reader and strips out the XMP metadata.

import java.io.*;
import java.util.*;
import java.awt.image.DataBuffer;
import com.adobe.pdf.*;

/* XMPExtractSample
* by Duane Nickull, Adobe Systems Inc. dnickull@adobe.com
* Copyright (c) October 25, 2006 - all rights reserved
*
* Use this at your own risk and don't whine/winge on to me if it doesn't work.
* You will need to have XPAAJ.jar from Adobe labs.
* Written and tested with JDK 1.5 on a mac w/osx 10.4.7

*/

public class XMPExtractSample {
public static void main(String[] args)
throws FileNotFoundException, IOException

/* Make sure we have the correct args.length() and call PDFExtract() */
{
String inPdfName;
if(args.length != 1 )
{
System.out.println("\nCommand line format: java DuanePDFClass1 pdf-file");
return;
}
else
{
inPdfName = new String(args[0]);
PDFExtract(inPdfName);
}
}

public static void PDFExtract(String inPdfName)
throws FileNotFoundException, IOException
{
System.out.println("\nOpening PDF with DuanePDFClass1...");
PDFDocument doc = null;
boolean b = false;
FileInputStream inPdfFile = new FileInputStream(inPdfName);
try {
doc = PDFFactory.openDocument(inPdfFile);
} catch (IOException e) {
System.out.println("Error opening PDF file :" + inPdfName);
System.out.println(e);
}
if(doc == null)
System.out.println("Cannot open PDF file : " + inPdfName);
else
System.out.println( "\n" + inPdfName + " was successfully opened.");

// Export the xmp metadata from the document
try {

//Call the PDFDocument object's exportXMP method.
InputStream myXMPStream = doc.exportXMP();

//Get the byte size of the InputStream object.
int numBytes = myXMPStream.available();
System.out.println("\nNumber of XMP Bytes found is " + numBytes + "\n");

// Read into a Buffered Reader Stream.
BufferedReader d = new BufferedReader(new InputStreamReader(myXMPStream));

// Iterate through the XMP object and print each line
String xmpLine;
while((xmpLine = d.readLine()) != null)
{
System.out.println(xmpLine);
}
// Find the Physical Memory Reference of the object
System.out.println("\nXMP InputStream is in physical memory at -> " + d);

//Create an array of bytes. Allocate numBytes of memory.
byte [] MDBytes = new byte[numBytes];

//Read the XMP metadata by calling the InputStream object’s read method.
myXMPStream.read(MDBytes);
} catch (IOException e){
System.out.println("it went really bad" + e );
}
System.out.println("\nXMP Extraction has finished.");
}
}



Friday, May 04, 2007

Web 2.0 Definition? What is the Web 2.0?

I have been writing a lot lately for an upcoming book on the topic of Web 2.0 with James Governor and Dion Hinchliffe for O'Reilly. During the process, we have done an amazing amount of research in an effort to quantify some of the patterns surrounding the concept. The work was actually quite intense and started with examining a single table put forth by Tim O'Reilly. The table illustrated examples of what was web 1.0 vs. web 2.0. Many people have struggled to define and understand "Web 2.0" At this point, defining it probably won't happen due to the fact that there are so many differences in what people think it is, however, anyone can mine it for knowledge. I personally don't see this as a problem since there seems to be a lot of consensus surrounding what is and is not web 2.0. While definition has possibly slipped away, the ability to share the collective knowledge on the subject has not. The knowledge of web 2.0 can be caught and expressed in architectural patterns and models. This blog post is a teaser of the upcoming book on that exact subject.

So what are "Patterns"? A pattern is a repeatable solution to a frequently occurring problem. The value of patterns is that it captures the solution knowledge independent of the implementation which then allows the pattern to be re-applied to other instances of problems in different contexts. An example of a pattern is to note the collaborative tagging (A.K.A. "Folksonomy") and commenting patterns on Flickr, then realize that the same mechanism can be used for video, audio, scientific research, news articles etc. Entrepreneurs in general should be very interested in this book. New start up ideas will be plenty abound.

We started with this diagram:



From each of these examples, patterns were distilled from the instance. The methodology left us with a huge collection of patterns that are documented and can be used to compare the old way to the new way. From these patterns, we were able to create a model based on further abstracting the main concepts required to fulfill the patterns. The model itself is abstract but from the model we were able to create a reference architecture for developers and architects. The idea is that the reference architecture is abstract of all technologies, implementation detail yet presents a great technology component view that can be used to help guide architects and developers as they build their applications.




The value of this methodology is that anyone can take the reference architecture and build their own specialized architecture from it. The model is simple and reflects abstract concepts that are present in most of the patterns. So what does the model look like and what is different? The model is shown below:



The model is definitely different than the old internet in a number of ways. In order to reflect the capabilities necessary to fulfill the patterns mined form Tim's examples, developers need to extend the basic client server model. Instead of a simple "server", the Services Tier of the model reflect the core tenets of Service Oriented Architecture, itself a a core pattern of Web 2.0. SOA is a pattern that can be used to match needs and capabilities under disparate domains of ownership. In this context, SOA is independent of any specific implementation or technology family such as web services and aligned with the abstract definition in the OASIS Reference Model for SOA. SOA allows "capabilities" to be offered for consumption to potential consumers on a common fabric. The common fabric is defined in terms of "Reachability and Connectivity", often implemented by using common standards and protocols. The concept of web 2.0 as an open platform relies on these open standards and technologies to function. Work such as the Service Component Architecture will rely on this type of infrastructure to exist in order to work.

The services tier offering these services is necessary to fulfill many patterns. To deliver a Rich User Experience (RUE), the capabilities must be leveraged to add more depth to interactions between users. To enable people to build mashups or offer Software as a Service (SaaS), the services tier must beliver the capabilities whilst abstracting the client from how the capabilities are being fulfilled.

The the middle tier of Capabilities and Reachability, we have seen huge changes since the first iteration of the internet. The development of Web Services standards and new data serialization forms such as XML to supplement the simplistic HTTP and HTML model form the first internet are necessary to fulfill the promise of the first iteration of the web. Guys like Bob Sutor, David Orchard, Marc Goodner and Eric Newcomer have all been working on these new standards and protocols for a long time. Why? They are absolutely necessary for Web 2.0. The Web must be open and mashable (new word??) to enable the patterns.

Additional patterns beyond simple "Request-Response" are necessary to fulfill core patterns like the "Synchronized Web". This latter pattern being used a lot for online gaming, collaborative applications and other synchronous architectures of participation. We have seen the rise of AJAX as an asynchronous model and various other mutations to make the patterns reality. Models for interaction include Probe and Match, Request-Response, Subscribe-Push, Synchronized, Asynchronous and more.

On the top side of the model, the old notion of "client" has been widened to become a "Client Applications/Runtimes". The purpose of this is to perform client duties and prepare the ultimate user to connect to the web. We noted that there is a new entity above the client. This entity is the User. The user is now a core part of the model for the internet and vice verse. Users are involved is so many patterns it would be difficult to ever devise an inclusive list. The Collaborative Tagging pattern ("Folksonomy), Collaboration-Participation Pattern, Rich User Experience Pattern, Semantic Web Patterns, Synchronized Web Patterns, Declarative Living and many others all include the notion of the user. Note that 'users' are not limited merely to humans but may include applications or other agents.

Some more about the model? This model can be used as a pattern between any two entities on the web. It is not about simply making one model for a platform of all interconnected devices. The model can be used in Peer to Peer patterns (one peer has a capability that gets consumed by another peer using protocols like BitTorrent via services for the ultimate benefit of a human actor) or other patterns like the Web Services * architecture, reflected in a great book by Chris Kurt.

Note that we do not consider the model to be the one single model that forever defines Web 2.0. It is simply "a" model which people can use, even if they disagree with it. If you disagree, you still have a model to use as a point of reference to describe your disagreements.

The reference architecture was presented during a recent session at Web 2.0 in San Francisco but I am not going to repost it here just yet. It will be the subject of another entry. In true Web 2.0 style, the book will have a sister website that allows anyone to collaborate and contribute to the set of patterns. This will be announced when the book is published.

The list of patterns identified to date is as follows:

Adaptive Software (software that gets better the more it gets used)
Asynchronous Particle Exchange
Collaboration Participation
Collaborative Tagging
Declarative Living
Mashup
Persistent Rights Management
Rich User Experience
Semantic Web
SOA
Software as a Service
Synchronized Web
Tag Gardening
...

Expect this list to grow as the work continues and others start contributing patterns. Note that Rich Internet Applications (RIA's) use a combination of patterns (RUE, Mashup, etc). Patterns themselves may be combined and used together.

Ahh - back to work..TGIF!!!

Wednesday, May 02, 2007

David Linthicum gets SOA - a good read.

I have just read an article by David Linthicum on SOA Reference Models and Reference Architectures. David has explained how the two relate to each other very well and I consider it a good read. There are a couple of points he makes that I am also wanting to expand upon.

In David's blog post, he writes:

"Again, abstraction, one is an instance(s) of the other, if I understand this correctly."

This infers that the SOA Reference Architecture work at OASIS is an instance of the SOA Reference Model. While close, this is not quite accurate. The OASIS Reference Model for SOA is in fact abstract. By definition, an abstract entity cannot have instances, the same definition shared by UML 2.0 and programming languages like Java. The relationship is best described as the Reference Architecture "is based" upon the Reference Model. The OASIS SOA RM TC always knew that there would be multiple SOA works (architectures) based on the Reference Model. Such is the purpose of a model, to allow various architectures to be based upon it which maintaining a common language and understanding of the core concepts, axioms and relationships.

David also writes:

"I urge you to download and read this 31-page document to get some additional details. Also, get involved, if you like. I always love the comeback from standards bodies that deal with criticism and debate around the concepts they put forward: "If you don't like it, join us and change it." Can't argue with that."

and

"You have to give them an A for effort, but you can see where the debates are going to pop up. It's really a matter of understanding, a marketing issue really. I understand different levels of architectural abstractions, but what is really needed is a reference framework or model, and a set of steps to figure out how to build something that's proper for your problem domain."

David correctly notes the true purposes of a reference model here. Even if you disagree with it, it is a point of reference a person can use to explain their variances in definition. For example, if someone claimed that SOA was not what the reference model stated, they have a point of reference for their definition. As such, there will likely never be newer editions of the RM work unless some great inconsistencies are uncovered during he RA works going on in various bodies, companies and vendors.

FWIW - I give David an "A" for his continued clarification of SOA. I'm adding him to my blogroll.

Saturday, April 14, 2007

Major Upset - Team Best Yet beats Team Indecent Exposure

In round three of the winners bracket, Vancouver, Canada based video game team Best Yet upset Indecent Exposure, one the top ranked teams on the MLG pro circuit. In a close match, Conker, BlakOut, Toxic and Nutraways shut the door on their pro competition, advancing themselves to the next round later tonight.

Below - Toxic Euphoria and Nutra take time to chat with a fan between rounds.

MLG Pro tournament - Halo 2 Free For All

From Charlotte, NC

For most of society, video gaming conjures up images of lonely 30-ish geeks or pimply teenagers staring at violent screens in dark rooms instead of participating in real life. For a the growing ranks of amateur and elite competitive players, taking it to the next level means playing in front of millions of fans in live auditoriums with stage lighting resembling a rock concert. Prize money for a single season now tops well over 7 digits. Parents, take note – this is just as legitimate a career as any other.

This weekend, I am attending my first event of the Major League Gaming 2007 campaign kicks off in Concorde, NC as a gopher for team Best Yet (BY). Our team has traveled from Vancouver, Canada and Utah to compete against the world’s finest in the Halo 2 bracket, a game from Microsoft played by millions of players every day. I decided to travel to the event myself to experience what it has to offer. I had preconceived notions that the video game crowd are shy, anti-social types. This is the farthest from the truth I could have suspected. The event itself was like a constant raging nightclub (minus the alcohol, fights, drugs etc.) where friends met, played, conversed and just had a great time. This report is about exposing this world of gaming as it starts to explode from a fringe activity to a mainstream test of intelligence, agility, coordination and strategy.

Before continuing, I have a personal confession to make. I used to be in a chess club. I used to follow Karpov and Kasparov as they met new challengers including IBM’s Big Blue, a super computer that was claimed impossible to beat by humans given it could calculate far beyond the capabilities of the mere human brain. If anyone knows geeks, it is me. The chess matches used to draw out for hours and the boredom could be best described as a mass communal sedative.

The team:

Coming from Argyle High School in North Vancouver, BC, Christopher Nickull (a.k.a. “Conker”) and I set out with two of his team mates at 06:00 Thursday to catch a flight to the event. Players often use pseudonyms representing their alternate personalities. Conker, is well known amongst many in the Halo 2 competitive landscape. Adam, aka "Nutraways", is also a student an North Vancouver’s Argyle School however the twosome met their third and fourth team mates online. Halo 2 is played via the internet so players from multiple countries can compete and even talk to each other during their games. Niko, aka “Blakout” hails from Whiterock, British Columbia while their fourth team member from Utah is somewhat of an international halo 2 rock star. His handle, “Toxic Euphoria” or often just “toxic”, scares competitors and intrigues spectators alike. He has the elitist distinction of finding an “exploit”, a loophole in the Halo 2 code base that allows a player to manipulate the game to their advantage. He also has a very unique style of playing. Together, the foursome is known as the team Best Yet or BY for short. In Halo 2, when a player is shot, the screen says “you have been shot by ” so when they make the kill, the statement is “you have been shot by by “ (as in “bye-bye”). Yes there is a lot of humor in the video gaming world but you have to be quick to catch most of it as the players have developed a language to themselves with terms such as “noobs” meaning “newbies” or those who are new to the game.

I’ve forgot what it is like to be on a road trip with a group of teeneagers but the fun starts with the hotel room which resembles a war zone within minutes. Shown below is the AM shot with Toxic and Blakout ready to get some breakfast while Nutraways can’t be coaxed out of the sofa bed, despite the danger imposed by a potential avalanche of hotel room furniture poised just above his head, ready to fall at the slightest tremor.



While some consider video games antisocial, the competition aspect is anything but. It is a very social event and has hints of all aspects of society. Some teams appear like tough street gangs out of some cheesy Hollywood movie, the only difference is that they are engaged in a high-stress competition and test of strategy and intelligence rather than fighting each other on the streets with chains and knives. Gender, race, religion, age, social status, career and nationality are completely meaningless here. Everyone is equal and has no advantage. I watch Friday night as a twelve year old kid destroys his opponents in one heat which include a twenty something girl wearing a party dress, some motley teenagers, a 30 year old computer nerd type and some guy who looks like an African American football linebacker, weighing in at al least 280 pounds of muscle. It turns out he actually was a football player. There are also a lot of female players who seem to hold their own against the guys. The girl poised below is one of many who ruined the evening for the young men in the crowd by outscoring them.



The weekend unfolds in three separate days for each of the MLG events. This is the first of the year so there are a few bugs in the system but generally everything flows on schedule with plenty of referees and officials on hand to keep the crowds and players in hand (yes – there are actually many who come just to watch). MLG is a top notch event provider and has left nothing to chance.

Early Friday night, players huddle in small groups, often representing their own teams plus a few friends. Each team for the MLG Halo 2 tournament is comprised of four members. Tonight’s action is a free for all though where team members may actually face each other during the contests. The team aspects of Halo 2 is an important component of the competition. The names taken by some of the players are noteworthy. Players take on names such as “Toxic”, “Bag of Sand”, “deathstar” and any other variation you can conjure up in your mind. It is truly funny to meet a player with a name like “Steel Robot Killer” to find a meek mannered 16 year with a 89 pound frame. Nevertheless, for his sake and societies in general, all of these kids are taking part in a kick-ass and very cool competition. Given the alternatives, this is a very cool scene. Imagination plays a big part too. Some of the players names on the brackets are noteworthy.




As I write this article, I’m sitting beside Joel Brill (aka PBJB), a contestant in the Halo 2 competition. He traveled from Boynton Beach, Florida with teammate Dark 99 to meet Chipmonk and Unger, completing the foursome of the team. PBJB and Dark99 met at school while the other members of their team were met online. Rather than being an antisocial aspect of video gaming, this competition is actually forming new friendships that would never have existed had it not been for the Major League Gaming. The members of the team are not overweight, chess club types. In fact, both PBJB and Dark 99 are more your typical skateboarder, snowboarder teenagers who take part in competition partially for the comradery but also for the challenge and social bonding. This story is far from typical with team members traveling from Europe and Asia to compete in what has become the Olympics of video gaming.

Friday night arrives and the first portion is the free for all (FFA). There are no teams in the FFA section and players gather in stations of 8 for 15-20 minute heats with the top four advancing to the next bracket until there are only 16 left. The final 16 play for the pro money on Sunday.

Prior to the start, the euphoria in the hall is unbelievable and approaches the energy apex of a rock concert just before an encore. This is the absolute opposite of anti-social. Friends who have met on line are meeting in person for the first time. New friendships are being formed and teams are working towards a common goal – a major portion of the $1,000,000 in prize money put up by a multitude of sponsors.



Vancouver based Team BY has mixed results in the FFA event. Only Conker gets into the top 64 seed (out of 1,200 contestants). Along the way he has to face countless others and keep reaching top four in each heat of 8. The concentration is astounding and unrelenting. A moment’s lapse in concentration can result in a loss of points and slipping several positions down. Conker has a medium following and each time he plays a group of fans compete for the best view behind him to watch his technique and strategy. Below, a younger player in a white t-Shirt leans on the back of Conker’s (in black t-Shirt) chair while he narrates to his friend what he witnesses. Sharing of techniques is part of the social aspect of the game. Noteworthy is the fact that the 12 year old with huge spectacles is still in the top 16 that will face off on Sunday for the pro money.



Below, North Vancouver’s Adam (aka “Nutraways”) takes a breather to smile for the camera on his way to first round victory in the FFA portion on Friday night.



Another rather unique aspect I find of this environment is the knowledge of health and vitamins possessed by many of the players. Most of them know about the effects of vitamin B complexes, with A and D to help absorption. I would wager that most of the kids here know more about taking the right combination of vitamins to heighten mental alertness than the average college major. Of course, Adam's is sponsored by Nutraway's, a Vancouver vitamin company that has a lot of influence in this area.

Friday was good, but tomorrow is their main event - the Halo 2 4X4 compeition.

Monday, April 02, 2007

Web 2.0 Architectural Patterns and Model Presentation

The slides from O'Reilly eTech are now available here. Feel free to poach and use at your leisure.

Synopsis:

There is no definition of Web 2.0 nor will there ever be a formal architecture. From Tim O'Reilly's example however, we can distill out patterns. If we take the list and compare Ofoto to Flickr, Akamai to BitTorrent, etc., the abstract patterns tell us what is going on for each example. These patterns can then be studied to build an abstract model for the Web 2.0. The abstract model in the presentations extends the basic client server model of the first internet generation to be able to facilitate the patterns of interaction people are building now. The new model extends the client to include "users" to enable patterns such as Participation-Collaboration and Collaborative Tagging. The lower part of the server sees SOA replacing the concept of a server given it encompasses an entire paradigm for software architecture and extends the concept into the enterprise (Capabilities) to fulfill other patterns like delivering a Rich User Experience or Software as a Service. The middle also encompasses some concepts that are important for developers and architects alike to consider such as consistent event and object models (necessary to build Mashups and the synchronized web patterns.

The first set of draft architectural and design patterns distilled from Tim's examples are listed below. Some of these are explained in the slide deck. The rest will be refined in a book I am working on with other authors.

Service Oriented Architecture
Software as a Service pattern (SaaS)
Participation-Collaboration Pattern
Asynchronous particle update (AJAX)
The Mashup Pattern
Rich User Experience
The Synchronized Web
Collaborative Tagging Systems (Folksonomy)
Declarative Living and Tag Gardening
Semantic Web Grounding Pattern
Persistent Rights Management
Adaptive Software
Fine grained content accessibility

Slides, Code Samples from 3 hour intro to Flex and Apollo

I had promised to upload the slides from Massive 2007 as well as the code examples used during the presentation. The presentation is 3 hours long and goes from Hello World to building an Apollo Browser in 5 lines of code. The slides are here and the Flex and Apollo Code Samples are on this PDF.

Please feel free to use the slide deck to help spread the good word. Please make sure to attribute where possible if you change the template.

Monday, March 26, 2007

Wait list for Flex, Apollo at Massive 2007

I just heard from Lindsay Smith today that the 3 hour course I am teaching on Wed. March 28 at Massive has not only sold out with 140 registered attendees, but there are over 350 on the wait list. 360Flex also sold out as have other events where Apollo and Flex are happening.

This trend is worth noting. At the recent Vancouver Flash Users Group meeting I realized there aren't really any unemployed Flash gurus in the area. There are tons of jobs being posted on various sites for Flex and I am sure Apollo is going to be the same.

The course outline is as follows:

  • Module 1: Introduction to Flex and Flex Builder
    • Simple application using online compiler (Build Flex Application)
  • Module 2: Installing Flex Builder
    • Hands on Walk through
  • Module 3: First Hands on Experience
    • HelloWorld (Build hands on application)
  • Module 4: Flex in more depth
    • Flash Chart from Data binding (S51: Build hands on application)
    • Flex Slider Control data capture (S53: Build hands on application)
    • Data binding (S55: Build hands on application)
    • Using the tag to code Actionscript behaviors (S57: Build hands on application)
  • Module 5: Working with XML using Flex Builder
  • Module 6: Flex and AJAX
  • Module 7: Apollo
    • Hands on (Build Stand alone Browser)
I'll post the modules here is there is interest.

/d

Friday, March 23, 2007

Adobe SOA platform launches Data Services

Architects, Flex/Apollo/LiveCycle/Java Developers take note. Adobe® LiveCycle Data Services 2.5 has just been released on Adobe labs for Windows, Linux, Unix as well as a cross platform java installer. Adobe has been a pragmatic adopter of SOA for years and this release shows engineering excellence and forethought. LDS is the next generation of Flex Data Services.

The name change reflects an important expansion in the use of these valuable services. In addition to serving the needs of both Flex and Ajax developers, LiveCycle Data Services will provide enhanced integration with Adobe’s other LiveCycle server products for document and process management, enabling business to create new ways to engage and reach customers.

Most people might think of SOA as only request-response. This is not the only pattern for service interaction within SOA and there are many others such as subscribe-push, multicast, probe and match etc. LiveCycle Data Services is a J2EE server that fulfills many

The feature set of LiveCycle Data Services 2.5 includes:

  • A new Flex SDK (which will be released currently with Data Services 2.5), which includes updates the client-side Web Services library.
  • Server-side PDF generation capabilities for RIA applications generates properly formatted PDF documents that include graphical assets from Flex applications, such as graphs and charts.
  • Runtime configuration of data destinations in Data Services eliminates the need for a compile-time dependency between clients and the Data Services server configuration.
  • Support for WSRP portal deployment of Flex applications, which makes it easy for developers to deploy a Flex application as a portlet in a portal server without having to do any portal specific programming.
  • Per Client Messaging quality of service (QoS) allowing Flex clients to select custom data access policies for real- time data.
  • Ajax Data Services, enabling Ajax applications to take advantage of the data management and messaging capabilities available in Data Services.
  • The Flex-Ajax Bridge (FABridge), which is a small library that can be inserted into a Flex application, a Flex component, or even an empty SWF file to expose it to scripting in the browser without any additional coding.
  • Improved off-line message queuing, supporting future Apollo development, which allows Flex applications using Data Services to queue outbound messages locally when the client is offline and manage exactly what is sent to the server upon reconnect.
  • Groundwork for future Apollo application support, including a local data cache that enables developers to cache client data requests and data changes to the local file system for later retrieval when an application resumes.
  • RTMP tunneling (RTMPT) that allows the use of the RTMP protocol in Data Service applications to traverse firewalls and proxies that currently prevent direct RTMP client connections to the server.
  • A new SQL adaptor, which dramatically simplifies the development of applications using Data Management Services without having to write any server-side Java code.
  • A new JSP Tag Library that enables MXML and ActionScript code to be embedded into a JSP page providing an easier entry for J2EE developers to Flex programming.
  • Several important enhancements to core Data Services performance and scalability.

LiveCycle Data Services 2.5 includes the following Web Application Archive (WAR) files:

  • flex.war - The primary Flex WAR file: use this as a starting point for building your LiveCycle Data Services application.
  • samples.war - Sample Flex applications.
  • inventory.war - Data Management Service - Ajax sample application
  • flex-admin.war - Simple administration and monitoring application.

Monday, March 19, 2007

Apollo Alpha available on Adobe Labs!

Get it here:

http://labs.adobe.com/technologies/apollo/

For those of you who haen't heard about Apollo, you will. Apollo (code name) is a cross-operating system runtime that allows developers to build and deploy rich Internet applications (RIAs) to the desktop, outside the browser. The technologies that Apollo currently works with are Flash, Flex, HTML, JavaScript, Ajax.

It brings the benefits of RIA/RUE web apps (network and user connectivity, rich media content, ease of development, and broad reach) – with the strengths of desktop applications – ( functionality w/o internet connection, application interactions, local resource access, personal settings, powerful functionality, and rich interactive experiences.





Thursday, March 15, 2007

Apollo Browser in five lines of code

In yesterday's post about what Apollo is, a comment appeared to challenge the notion of being able to implement a simple browser in 5 lines of code. Rather than rebuke it on the comments list, I decided to make this post and place the code here to show how easy it is. This is as simple as it gets, no back buttons, SSL, bookmarks etc, but it is a browser that you can type a URL into and it will navigate to the URL and display the HTML properly formatted.

The sample Apollo MXML code:

<?xml version="1.0" encoding="utf-8"?>

<!--line one. I am not goign to count the XML PI-->
<mx:ApolloApplication mx="http://www.adobe.com/2006/mxml" layout="vertical" cornerRadius="12">

<!-- line two -->
<mx:Text text="Enter URL and hit enter" fontFamily="Arial" fontSize="16" fontWeight="bold" />

<!-- line three-->
<mx:TextInput id="urlTxt" width="100%" enter="html.location=urlTxt.text;" text="http://www.adobe.com" />

<!--line four -->
<mx:HTML id="html" width="100%" height="100%" location="http://www.adobe.com">

<!--line five. Not really a line of code, just closing the root tag -->
</mx:HTML>

</mx:ApolloApplication>


Here is the screenshot of the Apollo browser application:

Wednesday, March 14, 2007

What is Apollo (Really)? Will it replace browsers?

The evangelist team at Adobe has been busy publicly discussing Apollo, the new flash and MXML based programming platform. During the time we have evangelized, there have been some mis-perceptions. Other than recognizing being an evangelist is sometimes more subtle than not, I want to discuss a few of the issues in this blog over the coming months.

For those who don’t know, Apollo is an internal code name for a stand alone application development platform that uses Flash and HTML to build interfaces. Unlike Flex Applications, Apollo applications exist as stand alone apps and are not bound to the browser. The Flash runtime is part of a native cross platform runtime environment that allows the application access to several core libraries and virtual machines. Apollo applications are cross platform and can utilize local resources to a greater degree than Flex based applications, yet less than full blown stand alone applications written in conventional languages that are targeted for single operating systems.

At a recent event, after a lengthy discussion and demonstration of Apollo’s functionality, a question came from the audience.

“Why do you want to replace the browser?”
The shocked silence that ensued made me personally realize that we have not clearly communicated the value proposition of Apollo. It is simply not true that we want Apollo want to replace the browser (even though you can build a simple browser in as few as 5 lines of code). The proposition of Apollo goes far beyond that capability. So what is Apollo? In Mike Chambers book he describes it with the following sentences:

“Apollo is a new cross-platform desktop runtime … that allows web developers to use web technologies to build and deploy Rich Internet Applications … to the desktop.”

Apollo is a middle ground, hybrid approach when a browser based application does not quite fulfill the requirements yet building a full blown, stand alone application might be too overkill, slow or complex. It is important to note that Apollo applications do have a very full featured set of libraries to build very complex applications. In no way should anyone consider an Apollo application as a feeble, halfway attempt at application development. Quite the opposite is true. Some of the early applications we have seen on the internal beta mimic the appearance and functionality of Apples’ Photobooth, standalone Text Editors with HTML capabilities, A Universal Business Language (UBL) editor, MP3 music players that can read your local iTunes library file, import it and use the ID3 metadata tags to search and retrieve photos from Flickr tagged with the same terms.

So why is this important? Why would you want to do this? Browsers are general purpose work horses and will not go away anytime soon but there are instances where browsers start to not fit the requirements. Browsers are best suited for online access to data. Sometimes, data needs to be worked with offline and later synchronized with multiple other data models. Browsers were not built to fulfill this task. Like wise, browsers are best suited to natively work with remote resources. The virtual machines for scripting languages cannot interoperate with local resources in a way native applications can without explicit permission being granted. Even then, most virtual machines have severe security limitations (* generally a good thing). Apollo transcends some of the restrictions of browsers.

Like browsers, Apollo also is not out to kill native applications, but can be used to rapidly (I meant very rapidly) prototype or build applications that can do many common tasks. Skinning the applications with Flash also allows a very rich user interface to be built that can transcend the typical opaque rectangular box approach of conventional applications.

Hello World – it’s me, Apollo!

Apollo applications can be built using certain builds of Flex Builder, but it is important to note that you can also use a plain text editor and the free compiler from Adobe labs (when available). To use Flex Builder, you benefit from first going to download and install the Apollo Extensions first (watch this space for the public beta announcement). You simply declare the root element as . The following code is an Apollo application that uses HTML code. The formatting is bad to fit the code into the columns available.



This yields a very simple application that looks like this:



Note that the cache button does not yet do anything. This was written as a prototype based on a request from Redmonk's James Governor. It is risky putting this up as it may trigger his memory and he'll leave a comment asking me to complete it soon. Duck!

Here is another example of an Apollo Application that traces a slider value and binds the data value to another component. It also changes the test on the label from “Hello Nobody” to “Hello World” when the slider value changes to be above “3”.



The Apollo Application looks like this:




Suffice to say, Apollo fills an important niche (pronounced “neesh”, not “nitch”. The latter really bugs me and most other Canadians). It’s going to be out there for you to play with soon so please take a look at it and see what you can do.

And all together, let’s say it one more time:

“Apollo is not out to kill Browsers”

Cheers!

Friday, March 09, 2007

Bush ignoring neighbours (note spelling)? Never!

I read today an article where George W. Bush denies he ignores neighbours.

In his speech, he stated:

"That may be what people say but it's certainly not what the facts bear out," Bush said. "We care about our neighborhood a lot."

Hmm. okay. I am not anti-Bush. I do think there are about 265 million Americans who could do a better job of public speaking and foreign policy than he does, but in general, he's just a guy trying to do his job. But....

He will never convince Canadians that he is not ignoring his neighbours. As reported on wikipedia:

"In a segment on the television series This Hour Has 22 Minutes during the 2000 American election, Rick Mercer convinced then-Governor of Texas George W. Bush that Canada's Prime Minister, Jean Chrétien, was named Jean Poutine and that he was supporting Bush's candidacy. A few years later when Bush made his first official visit to Canada, he joked during a speech, "There's a prominent citizen who endorsed me in the 2000 election, and I wanted a chance to finally thank him for that endorsement. I was hoping to meet Jean Poutine." The remark was met with laughter and applause. [1]"

Of course the problem is now past now that we have a newly elected new prime minister Steven Carper.

Thursday, March 01, 2007

Adobe committed to being open, web 2.0 company?

The answer has to be "yes". During the last six months we have seen PDF going to ISO, the code donation to the Tamarin project, the launch of Flex 2.0, the pre-beta Apollo program which allows developers to build really cool applications, Photoshop becoming Software as a Service (PDF has been for years) and more. In the near future Apollo is going to shake up the entire developer world (if you don't believe me, take a look at this application and imagine people can build this as a standalone application complete with live feeds to deliver ads, extra info etc). The Adobe Cycling Tour Tracker is by far the coolest web application I have ever seen in my life. I would rather watch this than TV. The amount of live information coming to the desktop is unparalleled. TV stations - take note. This is what you have to compete with in the future.

When LiveCycle ES launches, developers and architects alike will be able to see how advanced Adobe is as an enterprise software vendor. The LiveCycle ES platform is based on the core tenets of the OASIS Reference Model for SOA.

If you want to find out more, you don't want to miss MAX 2007. This year MAX will be held in three locations. North America (the main MAX) will be September 30-October 3, 2007 in Chicago, IL; MAX Europe: October 2007, Barcelona, Spain and MAX Japan: November 2007, Japan.

Things we can do better? Tell us. We're listening.

Sunday, February 25, 2007

Mix2r.com collaborative music portal growing!

In November, a new site was launched that allows musicians and other electronic artists to collaborate to create mixes, music and other audio projects via the internet. Recording an album used to involve recording tracks one at a time in separate rooms and controlling the creation via a central control room. Mix2r.com just overlays that pattern on the net to allow people to contribute to your mixes and music from all around the world.


Mix2r.fm, mix share collaborate, free membership


I have been using it to work on other people's music and have contributed to projects in the UK and USA. People from New Zealand have sent in tracks on my audio projects.

Even if you are not a musician, there are now hundreds of free MP3 works from various genres to legally download and use. There are desktop widgets for Mac users to get the latest audio files and RSS feeds you can use to keep up to date on the goings on. To listen to the latest music from Mix2r.com, go to this link http://mix2r.fm/recent/audio.


To be honest, we're still wondering what this might eventually become or where it will all lead. As a musician, I have been hopeful that a new model for the music industry will evolve. I want to see a really cool project start on the site to make a CD with ten songs on it, with each song having one track from one musician in every country in the world on it. That would be a really cool social project. Please help spread the word and maybe it will happen.

Oh yeah - its completely free and free of spam, spyware etc.

Wednesday, February 21, 2007

Massive 2007 - Free 3 hour intro to Flex and Apollo

My favorite tech show is just around the corner. Massive 2007, derived from the Techvibes Massive show, will attract well over 5000 visitors in a one day (March 28) frenzy of technology. What makes this show unique is that it caters and appeals to the non-technical members
of society as well as the hard core cutting edge techie types. It is also a show that emphasizes the social aspects of technology and has a very hip and upwardly mobile crowd.

I have been asked this year to teach a 3 hour tutorial on Flex and Apollo which will take place in the AM. Space is almost completely sold out so if you really want a seat, please register now. This is a very rare chance to get indoctrinated into the Flex and Apollo technology.

Friday, February 16, 2007

Adobe User Group Master List

I found this resource today for locating Adobe User groups on a worldwide basis:

http://www.adobe.com/cfusion/usergroups/

If there are user groups that are not yet listed, please list them here. This is a great resource for P2P learning.

Wednesday, February 07, 2007

Tide turns against Microsoft's XML Office format

There seems to be no shortage of technical complaints against Microsoft's Office XML format. Most of the list items are checklist items for standards bodies such as using existing standards where possible. There are some that are also what I would categorize as more of opinions rather than technical facts (such as the complaints against the use of confusing element names). I can understand how Microsoft word might have carried with it certain legacy functions that might even pre-date the XML specification currently under review within ECMA and ISO, but once a standard gets into the public stewardship, all is put on the table and it may be time to correct some of these items. Then again, if you fixed all of those items, why not just use the OASIS Open Document Format (ODF) as it is today in version 1.1? Why not harmonize the two standards?

Tuesday, January 30, 2007

New FLex-AJAX Libraries on Adobe Labs.

Two new pre-release Flex libraries are going up on labs in the next couple hours:
> Ajax Data Services library http://labs.adobe.com/wiki/index.php/Ajax_Data_Services
> Flex Ajax Bridge (FABridge) update http://labs.adobe.com/wiki/index.php/Flex-Ajax_Bridge

AJAX Data Services is a new JavaScript library that lets you access the powerful messaging and data management capabilities of Flex Data Services directly from JavaScript. With this library, you can integrate application clients built using Ajax technologies with the same back-end data services used by Flex application clients. This means that data from Flex applications can now be automatically synchronized with other Ajax applications, ensuring that both users see the most current, accurate information.

Significant updates have also been made to the Flex-Ajax Bridge (FABridge), which, as you know, allows JavaScript-enabled components to inter operate with Flex-enabled components embedded in the same web page.

Using both FABridge and the new Ajax Data Services library, you can now leverage the full benefits of both the Flex programming model and Flex Data Services, providing full interoperability with existing or new Ajax applications.

Both of these libraries are planned to be added to upcoming versions of Flex Data Services. If you use them, please let us know what you think by leaving a comment here.

Sunday, January 28, 2007

PDF Specification released to AIIM/ISO

Adobe announced it will release the entire PDF specification (current version 1.7) to the International Standards Organization (ISO) via AIIM. PDF has reached a point in it’s maturity cycle where maintaining it in an open standards manner is the next logical step in evolution. Not only does this reinforce Adobe’s commitment to open standards (see also my earlier blog on the release of flash runtime code to the Tamarin open source project at Sourceforge), but it demonstrates that open standards and open source strategies are really becoming a mainstream concept in the software industry.

So what does this really mean? Most people know that PDF is already a standard so why do this now? This event is very subtle yet very significant. PDF will go from being an open standard/specification and defacto standard to a full blown du jure standard. The difference will not affect implementers much given PDF has been a published open standard for years. There are some important distinctions however. First – others will have a clearly documented process for contributing to the future of the PDF specification. That process also clearly documents the path for others to contribute their own Intellectual property for consideration in future versions of the standard. Perhaps Adobe could have set up some open standards process within the company but this would be merely duplicating the open standards process, which we felt was the proper home for PDF. Second, it helps cement the full PDF specification as the umbrella specification for all the other PDF standards under the ISO umbrella such as PDF/A, PDF/X and PDF/E. The move also helps realize the dreams of a fully open web as the web evolves (what some are calling Web 2.0), built upon truly open standards, technologies and protocols. It also makes me immensely proud to be an Adobe Evangelist.

Adobe will continue to work hard to innovate on and around the PDF standard going forward.

I personally want to acknowledge some key individuals who are external to Adobe that were instrumental in the process. Bob Sutor (IBM), James Governor (Redmonk) and Gary Edwards (Open Stack) instilled upon myself and others at Adobe that embracing a course of open standards makes good business sense and is good for the community. Gary, James, Bob – thank you! The talks we had back in May 2005 were an inspiration for me.

To find out more on this, we are also hosting a blogger chat live at 17:00 Pacific Time Monday January 29, 2007 at http://my.adobe.acrobat.com/pdfconversations. If you want to blog about this, please feel free to join in. Space is limited. Leonard Rosenthol has published the history of PDF on his blog at http://www.acrobatusers.com/blogs/leonardr/history-of-pdf-openness. It is very well written and contains lots of supplemental information. The official Adobe FAQ’s are linked from http://www.adobe.com/pdf/release_pdf_faq.html. Last but not least, please leave a comment here and let me know what you think. I read all comments.

Yet another person who thinks they can crack PDF Security

Here we go again. This week, Universe Software announced that they have a tool that can crack security protected PDF documents. I have stopped writing about these types of claims since I debunked all of them by issuing a $500 challenge for anyone who can crack this PDF document in this blog post.

Given this has been live for over one year and not a single person (including those who have claimed they can crack it) has been able to crack it, I would suspect once more that last week's announcement by Universe is also complete bunk. However, I sent them an email and if it is not, they can crack it, post their success here and collect $500 from me.

Wednesday, January 24, 2007

Air Canada goes too far ($2.00 for a blanket)

Okay. I can get used to no food on flights or paying for food. I can get used to limited magazines on the flight, paying for alcohol, paying fuel surcharges, smaller seats and the other cost cutting things airlines or doing. In some cases, paying for meals actually makes sense since now it seems the food selections are better on short haul flights (I usually ride in business or first class anyways).

What I cannot understand is why Air Canada charged me two dollars for a blanket rental. Honestly, does it make that much of a difference? Can it even be rationalized given they are a public company and have to hire accountants to conduct blanket inventory and account for blanket revenues?

I am also pissed about this because the damn airplane was *really cold*. I had enough clothes on that I was NOT cold outside the airport in Vancouver, but got chilled during the flight. I initially resisted buying a blanket but gave in 3 hours into the flight. It seems however, I was too late; I seem to have picked up some sort of cold myself as a result. Feh!!!

If I get pissed off and don't use Air Canada for the next 6 months (statistically, that is about $30-40,000 worth of business from me alone), how many blankets do they have to sell to recoup that loss? I guess that is 20,000 blankets minus the costs of accounting for blankets (do they charge GST on domestic flights?). I am interested to know why and I am hereby inviting someone from Air Canada to comment on this blog and tell me why. In the meantime, I am not booking any new flights on Air Canada until I get an answer.

Add a comment if you join me in this boycott.

Thursday, January 18, 2007

Flash Player 9 for Linux and Open Source

The Flash Player 9 for Linux was released yesterday via the Adobe website and can be freely downloaded. I want to thank all of you who took time to write me personally about this for having faith and letting us get the job done we needed to do. The Linux community is very important to Adobe.

I also want to encourage Linux community members to also participate in the open source Flash Player scripting engine project at Mozilla. The Tamarin project will implement the final version of the ECMAScript Edition 4 standard language, which Mozilla will use within the next generation of SpiderMonkey, the core JavaScript engine embedded in Firefox®, Mozilla’s free Web browser. As of today, developers working on SpiderMonkey will have access to the Tamarin code in the Mozilla CVS repository via the project page located at www.mozilla.org/projects/tamarin/ . Contributions to the code will be managed by a governing body of developers from both Adobe and Mozilla.

Monday, January 15, 2007

Flex Camp (Bay area only)

My good friend and colleague Ted Patrick has asked me to extend an invitation to any Bay areas denizens who may be interested in coming to the Adobe San Francisco Office to get under the hood of Flex a bit more. This would also encompass interests in Apollo.

Evangelism is hosting a "Meet the Flex Team" in San Francisco at Adobe Thursday, Jan 25 5-8pm. The event information is provided here:

http://flexteam.eventbrite.com

If you plan to attend, register for the event.

Also please reach out to contacts in the bay area who are using Flex/Flash or in the web development market.

The Meet the Flex team session at Max2006 was a lot of fun and we expect this event to be similar. We will do some demos of Flex 201 and Apollo and will have a general QA session. The goal is to make Flex and Adobe more approachable and transparent in line with Flex25 goals. Plus it should also be a fun evening with our development community.

Wednesday, January 03, 2007

How truly open is Flash? Do we need "Open Flash"?

This is a post made by David Mendels that inspired me to get this message out. I too have noticed that a few people Still perceive Flash as a proprietary technology. If you are one of those, read this then ask yourself the two questions at the end. I had a completely different view of Flash before Adobe and Macromedia merged.

David writes:

(Some basic points)
  1. The Flash programming language (ActionScript) is 100% ECMASCript, a standard with multiple implementations and is open. You can script using ActionScript with a plain old text editor.
  2. The internal Flash Player VM, “Tamarin” is an open source project run by the Mozilla foundation (donated by Adobe).
  3. The Flash file format, *.SWF is a published format.
  4. The Adobe Flash Player (the reference implementation) is free. So are several others like the Gnash player.
  5. The Flash Player is available on Mac, Windows, Linux, Playstation, Nintendo Wii, Symbion, and many other platforms.
  6. An SDK for building, compiling, debugging Flash applications is available for free on Mac, Windows and Linux
  7. There are over 100 third party, free, commercial, open source and closed source products that produce, edit, generate, and otherwise manipilate Flash files, Flash Video files, etc.
  8. There is a very active Open Source community around the Flash runtime. For better or worse (I do work for Adobe -;) many many people take full advantage of the Flash Player without using any commercial products from Adobe (or anyone belse). See http://www.osflash.org/ to get a good view of this.
  9. Flash itself makes use of several standards such as JPG, AVI, GIF and PNG's as outlined here.

There are numerous web based services (You Tube, BrightCove, etc) that convert to, host, deliver Flash Video without requiring the purchase or use of any commercial or proprietary technology.

Now, all that said, the Flash Player as a whole is not open source. There are a number of reasons for this, at least as of today. 2 primary reasons come to mind right now, but these are not immutable:

i. The desire to avoid bifurcation. Right now one can produce a SWF from any one of many tools/servers/services from many vendors and be 100% confident it will run across platform and across browsers. We experienced the impact of multiple slightly (or largely) incompatible implementations of HTML/JS browsers and of JVMs and both had a major impact to slow innovation and usage. One of the things our customers (developers/desginers/publishers) have told is us not to screw up the compatibility and ubiquity that have been the hallmark of Flash since day 1.
ii. There are technologies in the Flash Player for which we do not own the IP or the rights to open source it, for example, we have licensed our MP3 codec.

There is one more area where we are arguably not “open”. This relates to our licensing strategy on non-PC devices (eg Cell Phones). On these devices, we do license the Flash Player for a royalty to device manufacturers and telco operators. It is still free from an end-user and developer perspective, but there are a lot of costs associated with these integrations.

(...)

My experience is that when people say they want “open”, there are usually 3 or 4 things they really want or need:

* No lock in. They don’t want adopt a technology that they may get “blackmailed” to pay money for in the future. I think we have addressed this fairly well by making the Flash Player and SDK free.

* Integration. They want the technology stack they work with to work with the rest of their stack and tool chain. This requires appropriate use of standards (eg. we support XML over HTTP, Web Services, ECMAScript, CSS, integration with multiple IDE and Source Code management systems, etc) and well crafted and well documented APIs. I think we have this area covered too, but I’d like to hear about concerns.

* Leverage existing skills. By using standards, one does not get locked into skills that can not be found generally in the market and that will be obsolete in the near term. This is why we standardized on ECMAScript. This is why we have an Eclipse based tool. This is why we enable development with a purely ASCII text format to fit into other systems. This is why we leveraged CSS in the Flex framework, etc. I think we have this covered too, but I’d love to hear your thoughts.

* Ability to fix bugs/issues without depending on a vendor. From a tool chain perspective, one can choose to work in an entirely open source toolchain for the creation of SWFs, so this is covered. From the runtime perspective, this is arguably a barrier. That said, I don’t hear a lot of folks who have actual concerns about our “stewardship” of the Flash Player in this regard. I’d love to have your perspecitve.

Questions for the public:

* What does “Open Flash” actually mean to you? Have we done a good job of balancing the interests of implementers and developers without hindering innovation?

* What specific problem(s) does “Open Flash” solve that are not addressed by our current “openness”

Friday, December 15, 2006

An open letter to the WTO and Pascal Lamy

I have worked in the United Nations to create a free and open stack of technology that will help level the playing field for the world. My employer, Adobe Systems, even spent a considerable amount of time and effort implementing some of the standards from UN/CEFACT using PDF and LiveCycle as the platform. The UN eDocs project allows people to simplify the process of creating the paperwork that must accompany goods in trade. The net results is that more people are given access to the trade infrastructure meaning they now have new chances to participate on a level playing field. Just imagine a world where anyone wanting to ship anything internationally had to pay $100,000 to buy a software program to communicate with the trade network? This should never be allowed to happen but it has in some places. One of the reasons I am excited about Apollo it the possibility it will lower more technology barriers to benefit humanity.

During this process, all of us in UN/CEFACT were aware that our work was needed because time has run out for some people who are being affected by the disparity in global trade created by technical barriers to entering the global trade network. The results are seen in the news - people starving, countries at war over resources and people denied the basic necessities of life.

Like any large committee, UN/CEFACT had hiccups and work had to be kick started a few times. As a Vice Chair, when this happened, I reminded the people involved that time was of the essence given the people who we are working for have no other options. Most ot eh time they complied and found a solution.

The World Trade Organization (WTO) has had a mandate to do similar world for all aspects of trade to create a fair and equal playing field for all people to prosper under. Unfortunately, the Doha talks have stalled and there is no schedule to resume certain talks that need to happen. The WTO has got to act now. Every day they delay means another day people live in poverty. I am upset by this and have written a direct letter to the Director General, Pascal Lamy. M. Lamy is going to hold a direct chat in December and I will attend and be say what needs to be said. Here is a copy of that Letter:

************************
M. Lamy:

Thank you for making yourself available to citizens like myself. We understand you have a very busy schedule and are grateful for your time to listen to our point of views. Please consider the following question and statement as two of my top concerns. If you can fix this, I have all I want for Christmas.

Question:

I too worked in a chair position for a UN body (UN/CEFACT 2004-2006) and found that talks can often break down. I immediately got everyone back to the table to resume dialog and did not let the process stall. I did this because every day, people are subjected to unfair economic discrimination. My question to you is "what are you going to do to force the talks to resume"?

Now my statement:

Every day the stalled Doha Liberalization talks fail to happen, people die as a direct and indirect result of economic disparities. They die M. Lamy. Men, women, children. They die!! I will invite you and those who sit within the WTO to remind themselves who they really work for. They work for people who do not know they exist. They work for people who do not even understand the system they have set up. They work for those who are too weak and too underprivileged to help themselves. You work for those people who are at most risk to die as a result of your failure to conclude these important talks and implement the policies.

You have a heavy burden on your shoulders and I do not envy you. Sometimes, the bureaucratic path fails when procedures are followed to rigorously and complacency follows. After all, no one in your family or mine will die and paying a few more dollars for gas and groceries is probably acceptable for both of us. But it is not!

PLEASE! Stand up and make a difference. Take control and remind those who need to work that there are consequences of their failure to work. Remind them who they work for and that they have a chance to save lives, both metaphorically and in reality. Lead them well, facilitate the process and make a difference.

I worked for the UN to help these people too. It is a thankless job and not many understand the frank reality of the world of commerce. If you ever need help, issue a call to action and I will be there.

Duane Nickull

Thursday, December 07, 2006

Screenshots: Apollo Extensions for Flex Builder

We’re one step closer!! Today I got the chance to try out some great pre-release technology from Adobe. The Apollo Extensions for Flex Builder is a small installer that adds Apollo Application capabilities directly into Flex Builder. I tested the build on the Mac.

CAVEAT: Nothing you see here may eventually make it into a GMC build. This is just a heads up. I suspect some of you might want to jump on the first Apollo Public Beta when it is available.

For those of you who do not yet know Apollo, Apollo is an internal working name for a technology that takes Flex Applications outside the browser. You can also incorporate HTML alongside your SWF’s to build standalone applications that can interact with local system resources. Apollo applications are built using MXML, the declarative programming framework and language used by Adobe Flex.

Before doing this, there were several manual steps one had to go through in the Flex Builder in order to create an Apollo Application including importing the ApplicationWindow *.swc to the Flex Builder Environment and changing the namespaces manually in order to get Flex Builder to compile the MXML into an Apollo Application.

The install of the extensions is really simple. The 20 MB download for Mac extracts into the installer. Double clicking on it opens up the install dialog. On the third screen I recommend just hitting “next” and using the default location. Note that you must have Flex Builder installed prior to installing the Apollo Extensions.



A post mortem on the directory reveals a wealth of Apollo wizardry installed during the process. Just look at all the Apollo goodies I now have!

When I launch the Flex Builder and start a new project, I have the option of creating a new Apollo Project.
When selected, the option automatically imports the required libraries and sets up the stub project with the default skeleton code. The MXML looks as follows:

Additionally, under the components browser, there is a new category called Apollo with some extra goodies in it for Apollo Developers. You can use these in addition to the stock Flex components to mix and match and build your application.

I quickly whipped up a UBL (Universal Business Language) application as a standalone app to work with UBL. No – it is not finished yet but it shows the real power of Apollo. The real magic happens when you hit the run button. Instead of the Flex Application building a SWF experience inside an HTML page, it launches a standalone application. The screen shot below show the small application I built on the Mac OSX (intel).


This technology is going to change a lot. The application above took less than 15 minutes to create the GUI for. Others have built some really cool applications like the Ascension MP3 player (screen shot below).

This application, written by Apollo guru Mike Chambers, can load a local itunes library file and songs referenced on it, has several visualizers and controls for the audio files and can also search on the web for photos from Flickr based on the metadata in the audio files. I loaded up one of my own songs from Mix2r.com and the Ascension application read my name on the ID3 tags and searched Flickr and found this photo.

This is yet only the beginning of what is possible.

Monday, November 27, 2006

Anne 2.0 joins Redmonk: today's significant event

You may think this is a funny title from a guy who is stuck in a city with 40 cm of snow and no drinking water (a temporary streak of bad luck for the otherwise "good luck city" Vancouver, BC). Nevertheless, I will explain why I think it is significant for the industry.

Redmonk is an analyst firm that "gets it". They are not just a group of suits who you can give money to in order to justify a point of view of have them endorse some bad idea like SOA 2.0. In fact, I am not sure I have ever seen any of them in suits. They are one of the few analyst firms I know that actually will tell you your idea is full of "it" if is bad. At a recent Adobe conference, I witnessed a senior Redmonk analyst sitting across the table from one of our executives deliver a very pointed stream of thought about a technology subject he felt passionate about. Some (not all) other analyst firms would have just been the typical "yes men" and caressed a square peg into a round hole. Redmonk is not like that. Redmonk tells you straight up where you are doing good and where you can do better. CAVEAT: Yes - I know James, Steven and Cote just as friends too. I think that despite a personal friendship though, my opinions are objective.

Today I was shown some rather great news that gave me the same sort of "stoke" factor as being at Whistler in 1 meter of fresh powder listening to the newest Pennywise CD (well maybe not quite that much). Anne Zelanka has joined forces with Redmonk. Anne has a great following in the technology space and to my knowledge has the distinction of being the first ever blogger (as opposed to anaylyst/press) invited by Adobe to attend the MAX conference. Nevertheless, a following is moot unless there is some substance to back it up and in Anne's blog, Anne 2.0, there is a lot of good substance.

So what does this mean for the established analyst industry? Could it just be that they have a stronger and more formidable competitor. Perhaps but to me I see Redmonk as opening a new sector, perhaps something like an open knowledge/intelligence transfer sector or community. They are a part of an evolving ecosystem that is responsible for intelligence and knowledge transfer on a mass scale to all companies and individuals (not just large enterprise clients although Redmonk has some of those). They fill a unique and valuable niche in the marketplace to be a little more cutting edge, a lot more candid, a huge amount more open and present the knowledge back in a package that is accessible to more than just large multi-national corporations. They have a lot of what the rappers call "street cred" (credibility on the street with the average IT worker or gang members in the case of rappers). Maybe Redmonk should make a rap CD on Mix2r.com?

However you package this news up, one thing is for sure - Redmonk will be on every analyst company's radar after today.

Friday, November 24, 2006

Great LiveCycle Resources

I just came across this site
http://livecycleportal.org/. As far as I know, this is not published by Adobe yet is by far one of the best resources available for LiveCycle Developers. There is also a Google Group set up for LiveCycle Developers. I would encourage anyone interested in LiveCycle to join and contribute to the conversations. The group may be reached at http://groups-beta.google.com/group/livecycle?hl=en.

I have been asked numerous times about LiveCycle 8 given the excitement about the first truly SOA platform coming from Adobe. I cannot answer this question but would encourage people to check the Adobe Enterprise Developer Site at http://www.adobe.com/enterprise/developer/

Other than that, please post questions on this blog and I'll always try to get you an answer from inside Adobe.

peace!