Archive for May, 2008

Working at Adobe Consulting

By the very nature of the engagements that we work on, it’s very hard to talk about so many of the customers and engagements that we are privileged to work on at Adobe Consulting.  What I’m going to try and do much more of going forward with this blog however, is share some insights into the recurring patterns in the kind of solutions we’re delivering, whether these be patterns in the user-experiences, patterns in the architectures and the way we leverage technology, or patterns in the business pains or business problems that we’re able to address with Adobe technology.  We believe we make customers most successful when we address these 3 key areas equally – the business need, context and drivers, the user’s needs, context and goals and aspirations, and the technology platform and possibilities when Adobe is thrown into that mix.

In the meantime, there’s an even better way of getting to know what our team does … and that’s getting inside the team.  On the Adobe Consulting website, there’s a video where Matt Thompson (Senior Vice President of the Worldwide Sales and Field Organisation), Marc Cannon (Vice President of Worldwide Consulting) and myself talk about what it’s like to work for Adobe Consulting, the kind of work that we’re doing and the kind of people that we need to help us deliver more and more of that work.

If you know what you want to do by the end of the video, then the video tells you what you need to do.

Head on over to http://www.adobe.com/consulting/ at the foot of the page.

Adobe Consulting at Scotch on the Rocks

I was very much looking forward to attending Scotch on the Rocks this year, and participating in the keynote…I believe from the organisers this would have made me the longest running presenter at Scotch on the Rocks! "Unfortunately" however, I have to attend meetings in Rome, so the Adobe Consulting team will be attending without me…however, we’ve got a great line up of presenters and presentations, so if you’re attending the event, I’d highly recommend you checking out their presentations and introducing yourself to the team:

Borre Wessel has been presenting at several conferences this year across Europe, including Norway and Flex 360 in Milan.  Borre will be presenting on "Modularising your Flex Application with Cairngorm and Modules" as well as giving another talk on "Flex UI Patterns and Best Practices".  I know these are 2 topics we keep being asked upon, and yes, we’ll try and share these presentations after the event!

Nicolas Yuen and Vianney Baron will be co-presenting on 2 talks.  Both guys have been really going deep on the integration of Flex, AIR and LiveCycle ES, and have been doing some incredibly innovative work around the platform.  They will be presenting an "Introduction to LiveCycle ES" and really helping developers better understand the value that LiveCycle ES can bring to their projects in the enterprise.  Their second talk, "Rights Management and Real-time Notifications with AIR and LiveCycle ES" is an awesome talk as well — the guys have created an AIR application that sits upon LiveCycle ES to allow you to rights manage any document type from your desktop and email it to someone; as the recipients engage with the document, you receive real-time notifications that the document has been opened, closed, how long it has been read for, etc, which gives tremendous control over the information assurance and security of sensitive documents. It was an application we developed as a blueprint for how Flex, AIR, Cairngorm, Java and LiveCycle ES with a little bit of JMS and Data Management services thrown in would work together.  This presentation was first delivered internally as part of our "Adobe Consulting Worldwide Brownbag Series" and I’m really pleased that we’ll be delivering it externally at Scotch on the Rocks!

Finally, Peter Martin is going to be giving another information-packed talk on "Introduction to Data Management Services with Flex".  I still think that not enough developers truly appreciate the value of Data Management Services, and the labor-saving, heavy-lifting and features that leveraging DMS correclty can add to your projects.  Peter really knows this subject, and will be discussing Data Management Services in the context of a number of solutions that Adobe Consulting have been delivering for some exciting projects, that Peter has worked on, as well as working with a simple "Hello World" application to articulate the concepts more clearly.

I’ve had the luxury of seeing these presentations already, but still wish I could be there for this event, especially one in my hometown, and especially one that has gone from strength to strength every year since the first time I presented Rich Internet Applications with Flex to a room full of bemused developers at what was then a Cold Fusion conference !

Cairngorm Tech Guides – Call for Topics

So I have challenged the Adobe Consulting team with producing some technical guides around Cairngorm – short 2-4 page documents – that capture some of the approaches, techniques and ideas we have been implementing on projects worldwide, where we are building Rich Internet Applications with Cairngorm.

So many of the common questions aren’t necessarily best responded to with more code, more interfaces, more abstractions and more framework classes, but are really questions about strategy and tactics.  Working with modules.  Strategies for internationalisationand localisation.  Working alongisde Flash Media Server. Cairngorm alongside data management services in LCDS.  Implementing a best-practice secure login.  Creating your first Cairngorm project.  How do you manage view-states.

So here’s my question: if we were to write 10 technical guides around how we use Cairngorm, each guide not necessarily being code (or entirely code) but just sharing with you the techniques, tradeoffs and considerations we have passed from project to project, what would those topics be ?  They may be the simplest of topics “how do I create a Cairngorm project from scratch”, topics around using Cairngorm within your delivery approach (“what strategies are there for improving unit-test coverage in Cairngorm projects”) to the downright advanced (“how do I pronounce Cairngorm ?”).

I’d welcome community feedback; I’ll collate a list of topics, and then we’ll see if we can’t let the community vote on the first technical guides that we’ll produce.

I look forward to your input.

User Experience – As simple as possible but no simpler.

So in the context of the video scrubbing demo, I talked about the pattern of direct manipulation as a way of replacing cumbersome chrome with more natural navigation.  Another blog post caught my eye today, that further reinforces this in an obvious manner – combining direct maniuplation with haptic interfaces of the like first unveiled by Jefferey Han at TED, a restricted form of which forms the touch-screen and touch-pad interfaces of the latest iPod and Macbooks.

 

So this demo from Colorado start-up Earthscape, shows how this concept of direct manipulation, of haptic interfaces and of the Wii inspired accelerometer-driven interfaces that can use pan and tilt of an actual device, to once again create a very natural navigation metaphor for a Google Earth like application.

 

You can see another video this on this YouTube clip here – a really nice blend of direct-manipulation, multi-touch gestures and accelerator-powered spatial navigation. 

 

Again, I’m just fascinated at how layer upon layer of technical and algorithmic complexity surface to the user as a veneer of utter simplicity and usefulness. When something reaches an extreme, it truly must become it’s opposite.

Innovative User Experience for Video Scrubbing

There are a couple of user-experience design principles that apply to so many of the Rich Internet Applications that we develop:

 

  • Content over Chrome
  • Direct Manipulation

 

When we speak about content over chrome, it is a reminder that the chrome of the application – the menus, the toolbars, the scrollbars, trees, etc – shouldn’t be allowed to suffocate and overwhelm the content that the user wishes to engage with.  The principle of direct manipulation often fits hand in glove with content over chrome; direct manipulation reminds us that rather than users using buttons, controls, menubars and sliders as proxies with which to manipulate or control content, we can look for interaction metaphors that allow the user to engage directly with the content itself.  Think of being able to drag an album cover into the checkout in order to make a purchase, as a discoverable way of directly manipulating the content, over selecting the album, and then having to select a “buy” button somewhere else.

 

But I digress; I just found over on techcrunch a tremendous example of these 2 UX principles being applied to the process of scrubbing through a video – forward- and re-winding through the video content.  In the DiMP player, the traditional “timeline as a scrub tool” with which we navigate video, has been replaced with a discoverable, yet very intuitive gesture-based approach to engaging with the video itself. 

 

Just take a look at this video here to see what I mean.

 

I think one of the other reasons that this gesture-based navigation resonates with me so much, is how much it encapsulates the philosophy of “building great experiences on both sides of the glass” which I’ve used in a few earlier blog posts, to describe how more useful, usable and desirable user-experiences can sit atop and hide the complexity of complex business processes through more intuitive interactions.  For me, this is the role of technology – to simply not complicate, to create ever more natural and powerful ways of engaging with ideas and information. 

 

Now take a look at this video and begin to get a glimpse of the complexity within the algorithms that are realising this functionality.  For most end-users, the genius and complexity will never surface to them – abstracted with the veneer of an intuitive interaction (arguably – once it has been discovered and learned) model.  What the video recorder wasn’t, but the Tivo was.

 

If you want to get this working on Flash Player 10, then start with the whitepaper here.  Good luck, let me know when you have it figured out.

LiveCycle ES – the SOA for your RIA

In my previous post, I introduced LiveCycle ES to architects and developers as a Service Oriented Architecture. For those architects and developers who are delivering Rich Internet Applications – and specifically what I used to call "Enterprise Rich Internet Applications", I also positioned LiveCycle ES as an SOA upon which you can build RIA, as back-end for Rich Internet Application front-ends. In the previous post, I broadly introduced the concept of LiveCycle ES services; in this post, I’d like to talk in a little more detail about the architecture for those services, and how this architecture exposes these services to your Rich Internet Application.

 

LiveCycle ES – An SOA deployed within your J2EE infrastructure

 

LiveCycle ES deploys into a J2EE application server, offering a Service Oriented Architecture upon which you can build applications, including (but definitely not limited to) Rich Internet Applications.  I don’t want to get into the details and technicalities of SOA, or SOA versus ESB, I want to keep this discussion abstract.  If you really want to understand how "SOA compliant" LiveCycle ES, Duane Nickull has covered this in the past, as has Marcel Boucher.

 

Every service in the LiveCycle ES Service Oriented Architecture is exposed through a number of different "end-points" which allow you to invoke those services.  These endpoints are:

 

  • RemoteObject endpoints for invocation by RemoteObject tag in Flex
  • WebService endpoints for invocation by WebService tag in Flex, or by another Web Service client
  • Java endpoints for invocation by Java applications running in a J2EE container
  • Email endpoints, that allow you to invoke a service on receipt of an email
  • Watched Folder endpoints, that allow you to invoke a service on a file as it appears in a particular folder or directory

 

Immediately, you probably have a sense of just how easy it is for a Rich Internet Application built with Flex or AIR to invoke and consume the services that LiveCycle ES offers; natively with a RemoteObject call, or with a WebService call. 

 

Immediately, you probably have a sense of just how easy it is for a Rich Internet Application built with Flex or AIR to invoke LiveCycle services alongside your existing J2EE infrastructure.   Though you could easily bring your own Java services into LiveCycle ES (more on that later), you can just as easily invoke LiveCycle ES services from your own Java middleware, and allow your Rich Internet Application to continue to sit upon your Java tier. In future posts, I’ll consider the trade-offs of some of these different archtiectures.

 

In future posts (and perhaps at MAX :) ) I’ll talk about just how easy, and how few lines of code you need, to bring powerful LiveCycle ES services to bear, to be seamlesly choreographed and orchestrated by your Rich Internet Application.

 

Hopefully you can see however, that with RemoteObject and WebService endpoints on all LiveCycle ES services, with the LiveCycle ES container deployed, it’s a no-brainer to invoke those services from your Rich Internet Applications.

 

In the meantime, how do I get started ?

 

First of all, go and grab a developer copy of LiveCycle ES, which we offer as a turnkey installation with JBoss. You can go and download it here.

 

There is extensive livedocs around LiveCycle ES – if the above has caught your interest, I’d suggest jumping into the "Introducting Invocation" section of the Programmer SDK docs.

LiveCycle ES for Software Architects and RIA Developers

I caught the following post, "Lets call LiveCycle what is really is", which captures a certain zeitgeist as developers and architects try to understand what LiveCycle ES can mean to them.  In this post, I’d like to share my thoughts on how I think Software Developers and Architects – particularly those who are already taking Adobe technologies into the enterprise – can think about LiveCycle ES. To summarise, if you’re a software architect or developer, then some of the ways you can think of LiveCycle ES are:

 

  • The backend to your Rich Internet Application front-ends
  • A Service Oriented Architecture (SOA) comprising services where information must move between the paper and the digital world, between humans and systems, people and processes
  • An architecture upon which you can deliver great experiences on both sides of the glass

 

If you are a financial service organisation, trying to improve the process of onboarding new customers, increasing conversion rates of customers and driving down the costs associated with abandonment and the inefficiencies associated with manual re-keying of application forms, I might have positioned LiveCycle ES differently to you. 

 

If you were a business analyst in an organisation, responsible for managing a number of electronic forms in your organisation, I might have positioned LiveCycle ES differently to you. 

 

If you were a manufacturing organisation, looking to convert CAD drawings as 3D documents that can be securely exchanged between buyers and suppliers, I might have positioned LiveCycle ES differently to you.

 

But you’re a software developer, or a software architect, you’re delivering applications within enterprise architectures, you see the value of Rich Internet Applications as a way of improving anaemic, frustrating, page-driven, web-based experiences. 

 

So this description of LiveCycle ES is for you.

 

The SOA Backend to your Rich Internet Application Front Ends

 

Several years ago, I used to use the phrase "Enterprise Rich Internet Applications" to differentiate the creation of Flash or Flex based web-applications with the same kind of user-experiences that had the additional complexity of having to be deployed upon upon new and existing enterprise infrastructure, usually J2EE or .NET technology stacks. 

 

For Adobe Consulting – and for many of you – this defines most if not all of the RIA development we undertake today. And when I think about building Enterprise RIA with Adobe technologies, I think about rich user-experiences built with Flex and AIR sitting atop LiveCycle ES on the back-end, alongside other enterprise technology and infrastructure, whether that be J2EE or .NET infrastructure, legacy enterprise information systems, or services from other 3rd parties.

 

LiveCycle ES – a Service Oriented Architecture

 

So to think of LiveCycle ES as an SOA, think for now of LiveCycle ES as a suite of services, pre-built by Adobe, that you are free to orchestrate, choreograph, invoke and consume from your own applications.  Broadly, you can think of these services as:

 

  • Services that support data capture in both an online and offline environment, and storage of that data in a form that can be acted upon by other services below, or storage of that data in industry-standard formats for archiving, for instance.
  • Services that support the dynamic generation, assembly and high-volume printing of high-fidelity documents, merging these documents with data from your applications, and from your enterprise information systems
  • Services that support the security and assurance of information that is captured, allowing it to be rights-managed, digitally signed and certified, and securely moved within and beyond your firewall

 

When you hear about LiveCycle ES "solution components", we’re essentially talking about packages of related services that you may or may not wish to have deployed within your service container.  So LiveCycle Forms ES, LiveCycle Barcoded Forms ES, LiveCycle Process Management ES, LiveCycle Rights Management ES, LiveCycle Digital Signatures ES, LiveCycle Output ES, etc, are all just packages of services that you can easily leverage in your own solution architectures.

 

And if you need a service that Adobe doesn’t offer, then you can simply and easily write your own, that can be deployed within the LiveCycle ES architecture to be invoked and consumed as first-class citizens.

 

However, an SOA is at it’s most valuable when loosely-coupled services can be composed and reused, seamlessly alongside services from multiple vendors, mixing them and matching them with services in your own architecture.

 

Composing Loosely Coupled Services into Business Processes

 

So LiveCycle ES will help there too, allowing you to not just choreograph and orchestrate the invocation of services from your client, but to aggregate and composite services into what we call orchestrations, that reflect your enterprise business processes. 

These orchestrations may comprise simple or complex complex workflows that can take seconds or even days to execute (because they require human intervention, they wait for an email to arrive with a signed document, they wait for a human to approve a loan, for instance). 

 

And most importantly, these workflows can leverage out of the box services from LiveCycle ES alongside non-Adobe services that exist on either side of your firewall.

 

These orchestrations themselves become services within the SOA, which you can easily invoke from your applications from a single end-point.  But that’s another level of detail I’ll defer to talk about until my next post.

 

Summary

 

So when I talk to customers about building innovative enterprise applications, I talk about innovating with Adobe technology "on both sides of the glass". 

 

On the glass, I advocate the business benefits that can be realised by delivering users more useful, usable and desirable user-experiences with Rich Internet Application technologies such as Flex and AIR.

 

Behind the glass, I advocate the business benefits that can be realised by building these applications upon LiveCycle ES, employing services from the LiveCycle ES "solution components" alongside existing middleware and 3rd party services, to create more innovative and effective business processes where information needs to be moved securely between the digital and real-world, between people and process, and across the firewall.  These business processes might support applying for a loan, registering for benefits, choosing a seat on a plane and printing a boarding pass, or all manner of other such applications.

 

LiveCycle ES by no means demands an RIA presentation tier.  But for me, the whole is greater than the sum of the parts.  To create great user-experiences on both sides of the glass, to bring rich user experiences to enterprise architectures, think about LiveCycle ES as the SOA back-end for your RIA front-end.

 

Within Adobe Consulting, this is a repeating architectural pattern for enterprise innovation.

 

 

It has been a while…

It’s always embarassing to look back at your blog, and see the last post from several months ago describe a well-intentioned return to blogging on a more regular basis.  So, if it’s all the same, I’m going to forego that future embarassment, while neither ignoring the fact that it has been some time since I posted last, nor predict the frequency with which today’s well-intentioned return will continue. But for those of you that were once regular readers of my musing, it’s still me, the iteration::two, Flash Remoting and J2EE, Cairngorm and Flex guy, who is now Technical Director of Adobe Consulting. I’m back, kinda.

 

The Adobe Consulting team has continued to grow; in no particular order other than starting with the one that last time I checked I had a permanent desk in, we have offices with Adobe Consultants in Edinburgh, London, Paris, Rome, Milan, Brussels, Amsterdam, Frankfurt, Munich, Rattingen, Boston, New York, Washington DC, Tampa, Ottawa, Chicago, Austin, San Jose, San Francisco. 

 

Put like that, my half a million airmiles with British Airways aren’t so much of a surprise; for the last several months I’ve been splitting my time pretty evenly between North America and Europe (each will tell you I spend too much time in the other), and enjoying the time to not only spend time with our own team, but with many of our customers around the world.

 

Every day, the teams are delivering innovative solutions upon our enterprise and digital media solutions, solutions that deliver, as I talked about at MAX 2007 in Chicago (have I really not blogged since then ?), "innovative experiences on both sides of the glass". 

 

On the glass, that means leveraging Flex, AIR and PDF, Flash and Flash Video, Flash Lite, or as I like to say to customers, "the medium to match the moment".

 

Behind the glass, our enterprise customers value the solutions we can build upon LiveCycle ES and LiveCycle Data Services, while digital media customers benefit from our ability to craft solutions upon technologies like Flash Media Server, Flash Media Rights Management Server and Flash Media Encoding Server.  When you combine these Adobe technologies with the development environment, programming languages and 3rd party products that are typical of a customer environment, whether that be a financial services, government, life-sciences, manufacturing, media and broadcasting or start-up customer, the possibilities for innovation upon this technology platform really are endless.

 

When our consultants aren’t delivering solutions for customers, they’re innovating about how these solutions can be delivered in the future.  Within each of our practices – and we have 3 practices, a Technology Practice, a User Experience Practice and a Project Management practice – our consultants are asked to spend a percentage of their time ("practice time") working on ideas and innovations that can improve the way we consistently deliver solutions, and that can ultimately be contributed back to the community.  Cairngorm and FlexUnit are obvious contributions from our team in the past, and rumours of the slowdown in their innovation have been greatly exaggerated.  In fact, we’ll be moving these projects in the very near future to opensource.adobe.com – they’re already staged there and awaiting some content (well actually, all of the content) and approval.  We want to treat these open-source contributions by Adobe Consulting exactly the same way our colleagues within Adobe are treating their products like the Flex SDK. We’ll open up the way we accept commits to the project, we’ll be more open with the charter behind the project (how do we decide what should and shouldn’t be part of the framework) and we’ll strive to share even more experiences with using Cairngorm through whitepapers and technical guides rather than just coding examples.  Your thoughts are, and will continue to be, welcomed.  

 

It’s not just about technology best-practice either; our user-experience team never cease to amaze me with the innovative solutions that they deliver for customers, and while so many of those are destined to be experienced behind enterprise firewalls, the patterns and practices are not.

 

Several years ago I, and the team I worked with, were passionate advocates for agile software methods as a particularly appropriate means of developing high-quality, mission critical, bet-the-business solutions. This is an area that Adobe Consulting have continued to innovate in; blending agile methods within the User-Experience process as well as the technology process, and building project management best-practices within our Project Management practice to support this kind of multi-disciplinary agile-delivery approach.  What’s perhaps most encouraging about all of this, is the number of customers I have visited in the past 18-24 months, in Europe and North America, in Financial Services, Government and some of the largest media corporations, where as I have walked from reception to the room we will be meeting in, I have observed whiteboards covered in story-cards, organised into iterations, sprints, backlogs, with burndown charts on the wall and even the odd crazy toy on someone’s monitor (I guess that’s the guy that broke the build). 

 

Just as I am spending less and less of my time helping customers to understand why they need to focus on delivering better customer experiences, to instead focus on helping them understand how, so too do I need to focus less and less on discussing the drawbacks of age old engineering methodologies and the advantages of adopting agile methods, and human-centered methods of defining and delivering solutions. When you look back, you see how far we have come. Agile is now orthodox; in this world that is flat, it’s not the biggest that eats the smallest – it’s the fastest that eats the slowest.

 

So with all of this, you’d think I should have something to talk about on this blog; and with all those airmiles and impromptu opportunities to wander around Heathrow Terminal 5 for a few extra hours instead of going home on time, plenty of time to flip open the laptop and talk about them.

 

So that’s the plan.  It continues to be a rush, each and every day, working amongst a small group of thoughtful and committed people, and I long to share more and more of the lessons that we’re learning.  It’s an incredibly exciting time to be working in this industry, as the disciplines of Design and Technology collide.  

 

As the anthropologist, Margaret Mead said, "…never doubt that a small group of thoughtful and commited people can change the world.  Indeed it’s the only thing that ever has."

 

It’s great to be part of this growing, thoughtful and committed community.