Archive for July, 2007

Grey Line

I spent this weekend testing some of our clients new applications in the wild – literally. In these parts of the woods Internet is bad enough on sunny days, and it gets MUCH worse when it rains. So I was getting all kind of errors on “production-ready” application that was fully tested on intranet.

Well, that does not really mean much in the real world. Here I was getting random disconnects, lost, out of sequence, corrupted and duplicate packages. The application was very much confused at best.

By the time it stopped raining I was ready for more. So I set up a Linux server, installed netem’s network emulation software and deployed my application there. By doing that I was finally able to put in order some chaos of disruptive networking issues. Netem allows you to provide any permutation of the latency, out-of-sequence packages, lost and erroneous ones, duplicates over local network – in this case, within VMWare on my laptop.

By the end of the day I am able to make the system work on par with the last century cell phone modem connection. That is just a pure luck that the system was designed with all the hooks for custom QoS and did not require rewrite of the communication server.

Quick setup of that VM as a bridge ( VMWare provides virtual adapters, you can just route your local traffic via that VM), and I am testing publicly available AJAX and Flex sites. Very few survivors out there – most of the applications die quietly at best.

Rich Internet Applications are being positioned to replace their client/server peers. It is extremely important that they can deal with disruptions in a robust manner, so the business operation can continue uninterrupted in a slow mode. Breaking transactions is not an option. Given utmost priority to this will affect design of your production-grade application and development schedule.

Sincerely,

Anatole Tartakovsky

Personal note: I noticed today that I am spending less then 30% of my time in Microsoft OS and most of the time in Linux. It appears that all 3rd party system developers are abandoning the platform – there is virtually no shareware/inexpensive or just decent tools for network simulation. As for usability, few times this week I was about to remove Vista from my desktop. It is definitely time to switch from Microsoft to Linux/Mac for base OS. Too bad Apple can’t fulfill on the promise to make OS available on high-end PCs – it just does not make sense to go from thinkpad t60p to Mac laptop – they are virtually identical, with better expandability on thinkpad side.

Comments

 

Grey Line

We’ve crafted a special public training program that is specifically aimed at Java developers with no or limited experience in developing enterprise-grade J2EE application with Adobe Flex front end.

“Real-world Flex for Java programmers” is an intensive, five-day hands-on training program for Web developers who need to create and integrate rich Internet clients written in Adobe Flex with enterprise J2EE applications. This is one of a kind hands-on workshop because during this week attendees will

  • create two fully functional Flex/Java applications,
  • learn how to properly set up a Java/Flex enterprise project
  • start using Flex Eclipse plugins that will turn your Java project into a Rapid Application Development (RAD) environment
  • start working on their projects in the class under the guidance of two experts and certified Adobe Flex instructors Yakov Fain and Dr. Victor Rasputnis, co-authors of the book RIA with Adobe Flex and Java .

Pre-requisites

Each student has to bring his/her own laptop.
Students should have a basic knowledge of Java

Curriculum

Day 1. Overview or Rich Internet Applications technologies, introduction to Adobe Flex, working with XML data, data binding, Basics of LiveCycle Data Services, working with remote Java applications deployed under Apache Tomcat server, creation of an RSS feed application.

Day 2. Creating reusable flex components, configuring LiveCycle Data Services, fundamentals of building Flex-Java-DBMS applications, logging and debugging, where the sessions belong, batching database operations, data-aware Flex components.

Day 3. You’ll be given an assignment to create a Java-Flex-DBMS application and will work on it in the class. You’ll learn how to set RAD environment, how to speed up and improve your productivity with Eclipse plugins for Flex and most importantly, you’ll get this CRUD applications up and running.

Day 4 and 5. You’ll start working on your own project in the class under the guidance of the Flex/Java mentor. If you are ready to work in this mode, bring your own sample database pre-configured for work with Tomcat, and we’ll help you to start your project from the right foot. If you are not ready with your own project spec yet, we’ll provide a sample spec and the database for you, and you’ll be working on this project under our guidance.

Location

New York, NY NYC Seminar and Conference Center (see http://www.nycseminarcenter.com/ )
For hotel info visit http://www.nycseminarcenter.com/visiting/hotels.cfm

Dates

November 26 – 30, 2007

Tuition

The cost of this bootcamp is $1995. Register by September 26 and save $200.
Each student will get free licenses of the following Eclipse productivity plugins ($846 value, see details at www.myflex.org):
ClearData Builder
FX2Doc
Log4Fx
Fx2Ant

Instructors

Yakov Fain is a Principal Consultant of Farata Systems. He’s responsible for the Enterprise Architecture and emerging technologies. Yakov authored several books and dozens of technical articles. Sun Microsystems has nominated and awarded Yakov with the title Java Champion. He leads the Princeton Java Users Group. Yakov holds BS and MS in Applied Math. He is Adobe Certified Flex Instructor.

Dr. Victor Rasputnis is a Managing Principal of Farata Systems. He’s responsible for providing architectural design, implementation management and mentoring to companies migrating to XML Internet technologies. Victor is a co-author of the book on programming with Flex and Java and is Adobe Certified Flex Developer. He holds a PhD in Computer Science.

Registration

The number of seats in this class is limited so early registration is suggested. To register, follow this link.

Comments

 

Grey Line

Today, we have released ClearBI 1.0, a Web reporter and business intelligence engine for rich Internet applications. While ClearBI 1.0 is targeted for Adobe Flex and Java developers, the upcoming ClearBI 1.1 is a rich reporting component that can be used with any AJAX application.

ClearBI 1.0 is available in two versions: ClearBI Plugin and ClearBI End-User:

• ClearBI Plugin allows a software developer create and customize a new report in Eclipse IDE. This report can be integrated into any Flex application by including an extra MXML file and recompiling the main application. The end users will be able to work with the report (sorting, filtering, grouping, export to Microsoft Excel, et al.), but won’t be able to save this customized report. This version comes with Clear Data Builder a code generator, and is offered at $799 per seat.

• ClearBI End-User version has all the functionality of the plugin version, and also allows the end users create reports from the universe of the data fields without need to install any software other than Flash Player. The end users create, customize and save reports in the centralized database server without any help from the IT department.
The End-User version is offered as a server license and is priced on a per server CPU basis.

You can develop, save and view reports in Eclipse using ClearBI Plugin:

ClearBI End-User version allows end users to customize and save their reports right from the Web browser using additional toolbar. No software other than a Web browser and Flash Player has to be installed on the users’ computers.

ClearBI designer allows you to specify styling, filtering, sorting, groupings, create formulas and more.

Both versions support report export to Microsoft Excel from Internet Explorer.

The next version of ClearBI 1.1 (currently in Beta) will support connectivity of this Flex component with the server-side Java using improved OpenAMF communication protocol, which may present an interest to the organizations that do not have Adobe LiveCycle Data Services. ClearBI 1.1 will also become a reporting solution for AJAX developers. We were able to decouple ClearBI from the data source. For example, this pre-recorded video shows how you can create a Web application that uses ClearBI 1.1 with a data feed provided by a Web service.

If you’d like to play with CLearBI on your own, point your browser at http://myflex.org/demo/clearbi/demo.html . Either repeat the report customization that I did or try to explore ClearBI on your own. You can download the documentation for ClearBI ( the  previous version of ClearBI) at myflex.org .

Thanks,

Yakov Fain

Comments

 

Grey Line

The fact that Adobe is open sourcing Flex is good but not good enough. The whole idea of open sourcing any software is to bring more brain power to the development process, which leads to a better quality product. But today my hands are tied.

I wasted a whole day on what should have been a trivial task – adding and ability to send some client context information alongside with an AMF request. Passing the request’s header information (i.e. information that is not passed with the RPC call but can be picked up by querying context mechanism) is quite common in Java programming.

I started by trying to pass the user name across the wire. With RTMP or HTTP requests you just add the objects you need to pass along to the HTTP header.

Setting up the Java side literally took 10 minutes – subclassing the FDS endpoints, creating the context class that would be used for keeping the information within thread execution:

package com.farata.remoting;
import java.util.Hashtable; import flex.messaging.endpoints.*;
import flex.messaging.MessageBroker;
import flex.messaging.config.ChannelSettings;
import flex.messaging.messages.Message;

public class CustomAMFEndpoint extends AMFEndpoint {

public CustomAMFEndpoint(MessageBroker broker, ChannelSettings cs) {super(broker, cs);}

public CustomAMFEndpoint(MessageBroker broker, ChannelSettings cs, boolean enableManagement) {super(broker, cs, enableManagement);}

public Message serviceMessage(Message message) {

Hashtable ht = new Hashtable();

ht.put(“context”, message.getHeaders());

MessageContext.setParams(ht);

return super.serviceMessage(message);
}
}

Here’s the “by the book” implementation of the Context object using Java’s ThreadLocal class:

package com.farata.remoting;
import java.util.Hashtable;

public class MessageContext {

public static void setParams(Hashtable session) { sessions.set(session); }

public static Hashtable getParams() { return (Hashtable)sessions.get(); }

private static ThreadLocal sessions = new ThreadLocal();

}

Let’s use a classical HelloWorld.java for testing:

package com.farata.test;

import java.util.HashMap;
import java.util.Hashtable;
import com.farata.remoting.MessageContext;
public class HelloWorld {

public String hello() {
Hashtable ht = MessageContext.getParams();
HashMap context = (HashMap)ht.get(“context”);
return “Hello “+ (String)context.get(“user”);
}
}

Done with Java, here comes the Flex turn. Now we need to subclass the ActionScript class Operation to update the message headers when the operation is being invoked:

package {

import mx.rpc.remoting.mxml.Operation;
import mx.core.mx_internal;
use namespace mx_internal;
import mx.rpc.AsyncToken;
import mx.messaging.messages.IMessage;
import mx.rpc.remoting.mxml.RemoteObject;

public class ContextOperation extends Operation {

public function ContextOperation(svc:RemoteObject = null, name:String = null):void {

super(svc, name);

}

mx_internal override function invoke(msg:IMessage, token:AsyncToken=null):AsyncToken {

msg.headers.context = {user : “Anatole”};

return super.invoke(msg, token);
}
}
}

Now the client’s test application:

<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” xmlns:local=”*”> <mx:Button label=”hw” click=”ro.hello()”/>

<mx:RemoteObject id=”ro” operationClass=”{ContextOperation}” destination=”com.farata.test.HelloWorld” result=”Alert.show(event.result)” /> </mx:Application>

So far so good, we are getting back “Hello Anatole” as expected. Here comes trouble – you can not use mx:method with this solution – operationClass is not being used with the template used by Flex compiler, which generates the following ActionScript code (you can see it with the help of -keep compiler’s option):

private function _RemoteObject1_i() : mx.rpc.remoting.mxml.RemoteObject
{
var temp : mx.rpc.remoting.mxml.RemoteObject = new mx.rpc.remoting.mxml.RemoteObject();
ro = temp;
temp.destination = “com.farata.test.HelloWorld”;
temp.operations = {hello: _Operation1_c()};
temp.initialized(this, “ro”)return temp;
}

private function _Operation1_c() : mx.rpc.remoting.mxml.Operation{

var temp : mx.rpc.remoting.mxml.Operation = new mx.rpc.remoting.mxml.Operation();
temp.name = “hello”;temp.addEventListener(
“result”, ___Operation1_result);
temp.addEventListener(“fault”, ___Operation1_fault);

return temp; }

I did not expect to see “new mx.rpc.remoting.mxml.Operation()”, but rather new ContextOperation.  This is clearly a bug in the template used by the code generator, which I could have fixed myself and returned the fixed version back to Flex developer’s community. Unfortunately, the code of the templates is not available.

Frameworks that use code generators need to open templates so enterprise developers can extend them. Extension of the framework means symmetrical changes in templates, so if you allow one, you should allow the other. Also, in order to take an application framework to the next level, the preprocessor/code generation passes need to be extendable by developers as well .

Please open up AMF/RPC and Flex compiler or at least set up the community process to let us quickly fix such bugs.

Thank you,
Anatole

Comments (1)

 

Grey Line

We’ve implemented in Flex a Web application that supports full screen mode (note a small icon in the top right corner at www.myflex.org). This blogs explains the issue you may run into while implementing the full-screen mode. The process consists of two steps:

1. Identify if the player is capable of displaying the Web application on the full screen.
2. Apply ‘fullScreen’ to displayState property of the stage

The first step is usually done by parsing the version numbers (major, minor and build) of the player using Flex regular expressions:

public static function fullScreenEnabled ():Boolean {

var versionString:String = Capabilities.version;

var version:RegExp = /\w\s+(?P<major>\d+),(?P<minor>\d+),(?P<build>\d+),\d+/;

var result:Array = version.exec (versionString);

var majorVersion:Number = Number (result.major);

var minorVersion:Number = Number (result.minor);

var buildVersion:Number = Number (result.build);

enabled = (majorVersion >= 9) && ((minorVersion > 0) || (buildVersion >= 28));

return enabled;

}

If you’ll follow some online suggestions on implementing the second step, you’ll run into problems:

this.systemManager.stage.displayState = state?”fullScreen”:”normal” ;// wrong

this.systemManager.stage["displayState"] = state?”fullScreen”:”normal” ;// won’t work either

Developers in Java and Flex world usually assume that if the code passes compilation ( and here we have strict references ) the linkage issues are resolved. However, this code will throw an exception if executed in older versions of Flash.

Either of the following two approaches will work :

if (“displayState” in systemManager.stage) this.systemManager.stage.displayState = state?”fullScreen”:”normal” ;// OK

try {

if (“displayState” in systemManager.stage) this.systemManager.stage.displayState = state?”fullScreen”:”normal” ;// OK

} catch (e:Exception) {}

It becomes even more relevant when developing components that are reused by both Flex and Adobe AIR.

Thank you,

Anatole

Comments

 

Grey Line

While delivering a talk on SOA I’ve asked the audience the following question, “What do you think is the driving force for implementing any technology or architecture in a decent size Enterprise?” The answers were typical – better code re-usability, accessibility… But I was looking for a different answer that has nothing to with technical merits of any technology. Based on what I see in the real world enterprises, the main reason of implementing SOA (or any other IT initiative) are career goal of individuals working in this organization.

People want to become more visible and move up the career ladder. Implementing SOA across organization can make enough noise to move them to the next level.

SOA Ground Up

The SOA in your firm can evolve from the ground up. For example, an ambitious architect attends conferences, goes through training, reads white papers, and now he truly believes that SOA is a right way to go. He’s aggressive and influential and managed to convince the CTO or CIO to allocate funds for this.

If you are not an architect but just a software engineer, you may try to start convincing your application manager, but typically application managers don’t want SOA. They are busy with business as usual: do not forget to call into the change management meeting, fix yesterday’s production bug, deal with an offshore team, attend 5-6 meetings a day… They are firefighters. Imagine a firefighter that is putting out a fire…Here you come in a clean white suit offering to sell some new bells and whistles for a fire truck…

The chances of a software engineer to start SOA movement are very slim, really.

SOA Top Down

Another reason for SOA is this: your CIO went to a conference and attended a presentation of an energetic speaker, which clearly explained benefits of SOA over any existing architecture. This is the worst case. Subordinates will not resist – they also have career goals…

Your CIO will come up with an SOA project plan based on available funds and resources, which means that this project is doomed. The fact that your CIO will never admit that it was a mistake makes things even worse.

All application groups will roll up the sleeves, will work hard and meet the deadlines.
But let me remind you a quote from a must read book “The Mythical Man-Month ”:

An omlette, promised in two minutes , may appear to be progressing nicely. But when it has not set for two minutes, the customer has two choices – wait it or eat it raw. Software customers have had the same choices.
The cook has another choice; he can turn up the heat. The result is often an omlette nothing can save – burned in one part, raw in another.

SOA as a burner

The third reason for implementing Enterprise SOA is to burn some cash: we (IT) have $2M – let’s service-enable all of our applications by the end of this year. Why $2M? It’s elementary, Watson! Because you need to burn $2M this year, otherwise you won’t get funding next year. Get some high-price items. Who cares that no real feasibility study was made? Just go with a well known vendor and get expensive software/hardware – your developers will figure out how to plug in that Enterprise Service Bus into your SOA.

SOA Maturity

I work as a consultant, and sometimes I have to interview technical managers to figure out if SOA is a realistic solution for their company, and how the CUSTOMERS of this particular silo application will benefit from implementing SOA in the firm.

What do I see – all these people are working hard to fulfill their current obligations, to make sure that their applications are up and running in production, that support calls are answered in a timely manner, the offshore team is delivering, and on and on and on. And her I come in a white suite asking all these smart questions:
”How do you run business today?”
“What parts of your application are the candidates for being converted into services? No, SOA is not the same as Web Services”.

And these polite but tired people are looking at me, listening to me, they’ve seen already other architects trying to change the way they do stuff in their organization. Several similar initiatives have failed before, and here we go again…I can not forget one technical manager – this lady was having hard times even finding time for meeting with me. During the appointment she was polite, but looked tired and worn out. She’s a professional and was trying to answer me questions anyway, but her phone rang off the hook, he right hand was moving the mouse over the MS Outlook screen. “I’m so sorry, I need to take this call…” And I’m thinking to myself, ”What am I doing there? Does she needs SOA?”

Is your organization ready for SOA? Does your company have the right skills, infrastructure, SLA, SDLC in place? What methodology are you planning to use to identify services?

Do you have lots of third-party shrink-wrapped applications?
You know how to wrap up your CICS application into a Web Service, but are your mainframe developers willing to get re-trained? What about the governance?

Some architects start with purchasing expensive software and hardware assuming that the main part of the SOA initiative is accomplished. No, you can’t buy SOA.

Someone has to do a feasibility study for your firm (preferably external vendor) – but this has to be an honest opinion of a qualified group of people. This study has to be convincing, it has to show if implementing SOA is the right choice at this time for your firm.

SOA maturity assessment is extremely important.

Technical Benefits of SOA

If someone will create an inventory of all applications of a large organization and the data exchange between these applications, it may look scary.

An app A provides data to app B. It would be nice if the app A would be able to easily send the same information to applications C and D as well, but this would require some data transformation. Currently, your people would just create and deploy a new ETL (extract-transform-load) processes for A2C and A2D data exchange.

But SOA can offer you a more elegant way by implementing an Enterprise Service Bus that would take care of the data routing and transformation. Someone said that the main reason for implementing SOA is reusability? Let’s look at the before-after SOA diagram:

The second diagram looks much better than the first one, but how much it’s going to cost your firm to switch from the first diagram to a second one?
How much would a reusable service cost you comparing to just writing new ETL scripts for each new connected pair? Is it worth the money?

Why reusable components would be expensive? Let’s talk about infrastructure, which is an enterprise level group that owns shareable software and hardware.

ESB Infrastructure

ESB requires a centralized group with proper skills. How this group will be funded (a slice of each project’s budget, internal consulting, a hybrid)? SLA must be in place that would require this group accommodate every application team’s needs in a timely fashion. The quality of service has to be clearly defined (is it 24×7 or what’s the max time the service can be down).

Do not forget about service versioning, which is not the same as application versioning. Some service consumers may be happy with the version 3.2 and you’ll have to support both 3.2 and 3.3.

Coming back to the human factor – do you have good relations with the ESB group? Personal relation will always get you farther that any SLAs combined. By the way, Joe Smith who runs the ESB group has his own career objectives and ambitions

The ESB group has to accommodate application group’s needs in a timely fashion. You need to make sure that Joe find time in his busy schedule and allocate his resources to your project’s needs.

If you keep your ugly point-to-point ETL way of connecting silo applications, you do not need to create this infrastructure and introduce yet another moving part into your rather complex enterprise architecture. Again, human relations between you and Joe Smith become crucial for the success of your SOA project.

Now you need to get trained and spend some time preparing your data for the input into the ESB in the proper format, specify the right output format for every new application and document it according your firm’s SDLC process. How quickly the infrastructure team will write and test the conversion script for your recipient application?

Yes, every new connection between the applications that you introduce adds a bit more spaghetti to the diagram, but you could have done all this with your own resources in a controlled timely manner without missing deadlines and jeopardizing your career. By the way, Joe Smith from infrastructure has his own career objectives. If your project fails, your yearly review suffers, now you need to find common grounds in achieving yours and Joe’s personal goals.

To SOA or not to SOA

This does not mean at all, that I do not recommend you to implement SOA in your enterprise, it just means that you need to be prepared and armed when it comes to dealing with all these issues. SOA is definitely a way to go in green field situations when you start automation of your enterprise from scratch.

I wonder if you are familiar with this diagram:

This is Minard’s Diagram of Napoleon’s March on Moscow of 1812. The width of the line shows the size of the army on the way to Moscow and back.
Napoleon was expecting greetings from Moscow authorities, but entered the abandoned and burnt city with no supplies and food for his huge army. His retreat was also a deadly enterprise because of an extremely cold winter (−36 ° F ), no grass for horses (most of them were eaten by the French soldiers anyway). You can read more about it in Wikipedia.

My message to you is this: “Do not repeat Napoleon’s mistakes in your SOA journey. Do not start it unless you have the right expectations and your infrastructure will definitely be ready.

Making Business Users Happy

Oh man, I almost forgot about your business users! Will they happily greet you at the gates of their cities? How did you convince them that they should shell out a substantial chunk of money for implementing your SOA initiative? Do they actually know about this initiative or you managed to get funding because you play gulf with the CEO of your firm?
If this is the case, I have bad news for you – you can’t avoid contacts with business user during immersing your enterprise into SOA waters.

Do they give a damn about what architecture you use to give them the data? Not really. They will definitely ask you a simple question, “OK, I’ll give you X amount of dollars and allocate resources for a year for your SOA project. Will I run business differently a year from now? Will you provide me more analytical data in a more convenient form? Will my customer-facing sales force become more productive which will translate to more sales?”

SOA+RIA

To make end users more productive, we need to shift gears a little bit and recall that user experience really matter.
Think of iPod. How many people know the name of its competitor? What do you prefer – Apple’s iPod or Zune from Microsoft?

The Zune has a bit more functionality, but iPod looks nicer and the user interface is cleaner. InformationWeek has published an articles listing 8 alternatives to iPod . Have you even heard of them?

Tomorrow, huge number of people hopes to get a hold of the new Apple’s widget called iPhone. They want it now. $600? Not a problem. They want it now. Let me stress, it’s still a phone with the ability to browse the Web and a modest disk space for storing music. From the services perspective is not a revolution, it’s the User Experience that make it stand out and this is the main reason why people want it.

You may ask, what all this has to do with SOA? People like nice looking gadgets, and they like nice looking program interfaces too! It’s easier to sell SOA to your business users if the SOA client applications are convenient and slick. Especially this is true for the customer facing applications. If you sales representative comes to a prospective client with a rich-looking application clearly showing your products, their job becomes a lot easier. If you offer your firm’s financial analysts rich GUI interface with live chart and graphs to easily compare performance of two mutual funds, analysts will really appreciate it. You still need to program the services that will go and get the data, but having great presentation layer is extremely important.

When you create or modernize your application, do not just think about powerful multi-processor servers, multithreading, and ESB. Start redesigning the users experience – it has to be available everywhere (at home, on the road and in the office), it has to be responsive, and it has to look better than client server application written it was ten years ago in Visual Basic and PowerBuilder.

Ten years ago we were thinking screens not servers. And this was not a bad idea. When Java was born, the client programming became complex, besides, Sun Microsystems and IBM wanted to sell server licenses, which has moved most of the Java development to the server side.

RIA

Now we can talk about the rich Internet applications (RIA) that can and should be used as consumers to the services. The RIA term was coined by Macromedia back in 2002. I’m not sure if there is a formal definition of this term, but you can think of RIA as desktop-quality applications delivered over the Web with no (or close to none) installation required.Let’s turn on the time machine and go 20 years back. Mainframe with their dumb terminals dominates. The client portion of the application is a black screen displaying green and red text. Then, in the early ninetieth client-server application came about. The clients were not dumb anymore, rich looking GUI that utilized the processing power of the PC.

In mid 90th, Internet became popular. Plain looking pages had an ability to get all kind of information from a plethora of remote servers. From the GUI perspective, it was a pushback. Mainframe had black background with green letters, while Web pages had colored backgrounds, static pictures and the same text fields, buttons and rudimentary HTML tables.
Now the rich GUI is coming back again in the form of RIA. These are not page-by-page typical Web site, but full-fledged applications with rich controls, audio and video, with state stored on the client. Now the user get this nice looking application delivered to their PC without the need to go through a complex install process.

Today, RIA can be created with Adobe Flex or AJAX. Microsoft’s Silverlight is coming out later this year, and Sun Microsystems will offer their JavaFX RIA solution in 2008. OpenLaszlo can also be used for creation of RIA. All these technologies can be used for creation of consumers of the services in your next SOA project. Leading enterprises started using professional designers for wire-framing next generation Web applications.

If you are an architect of an enterprise SOA project, do not just think servers, clusters, and grid computing. Think of your business users. Give them something nice, and they’ll be helping you with your SOA-SHMOA efforts and will enjoy the new system as they already enjoy iPods and upcoming iPhones. SOA must improve user experience of your business clients – do not underestimate the human factor.

Yakov Fain

Comments

 

Grey Line

Software engineers of Farata Systems present on several conferences every year during which they enjoy learning from others and share their accomplishments. We also run public and private training sessions. Below are our confirmed engagements for the Summer and Fall of 2007.

NYFlex Users Group, New York, July 19, http://www.nyflex.org/
Enterprise Web Reporting with Flex
by Yakov Fain and Anatole Tartakovsky

Real-World Java, New York, Aug 13, http://realworldjava.com/
Flex for Java Developers
by Y. Fain

Max 2007 conference, Chicago, the panel “Flex Best Practices”, Oct 2 , http://www.adobemax2007.com/
by A. Tartakovsky

AjaxWorld, Santa Clara, CA, Sep 23, Flex Developer’s Bootcamp
http://flexbootcamp.sys-con.com/
Y. Fain, Victor Rasputnis

New York University, New York, Oct 25 – Nov 29, http://www.scps.nyu.edu/departments/course.jsp?courseId=79005
Flex 2: Building Rich Internet Applications
By Y.Fain

EclipseWorld conference, Reston, VA, Nov 7,http://www.eclipseworld.net/wed_pm.htm
Rapid Application Development of Rich Internet Applications With Eclipse Plugins
by Y. Fain

Real-World Flex for Java Programmers, New York, NY, November 26-30, 2007, http://flexblog.faratasystems.com/?p=225
A five-days workshop taught by Y.Fain and V.Rasputnis
Please let us know if you are interested in arranging private Flex training at your site. We run classes almost anywhere around the globe. For example, within the next month we are running Flex training for corporate clients located in New York and Hong Kong.

See you in class,
Yakov Fain

Comments

 

Grey Line

I have been reading a lot about AIR lately and it seems that most of long time Macromedia users are missing the point of the product. The best Flash/Flex developers do not see enough of the difference with existing browser solutions�and HTML guys do not understand why would they need another browser/compatibility test for their overstressed sites.
Here�are�2 major�points:
1. Flash/Flex programming/authoring are limiting explosive grows of the Rich Internet Applicaions – mash-ups with easy publishing is the must if you want to get support of millions of IT people that were ‘Thinking in HTML’.
2. HTML without reliable communication model, fast pre-compiled code (every time you load page JavaScript is being compiled) and better media support is a “no-go”. Low bandwidth, latency and unreliable communications break AJAX sites easily.
Low-level performance and lowest denominator of the features available across the browsers limit the complexity of the applications and skyrocket the costs.

AIR is THE SOLUTION to these problems.

We have been developing large AJAX applications for enterprises between 1999 and 2005.
Along the way, we had to “upgrade” the browsers our clients used with extended HTTP protocol for reliability and performance.
We had to complement browser security model to allow business printing and controlled file access.
We had to provide framework of high level controls like datagrids, treeviews and tabfolders to make AJAX programming more productive.
And we made JavaScript pre-compilation available so large applications can load and interact faster. Most of AJAX frameworks are still in infancy because the bandwidth and JavaScript performance /precompilation limit what they can do.
In short, by building real-world application we had to build proprietary AIR/Flex platform for our clients.
When we talked to Microsoft 3 years ago of what the next version of IE could be – and explained our vision – they bluntly said that it would be a competition to Vista. They wanted the browser dead and Vista replacing everything as an application platform.
Here is a funny part – since then they spent billion of dollars buying technology to catch up in their AJAX offering. They did it for a reason – AJAX is what businesses are spending on NOW. It is GROWING not because of the technical merits, but because of the KISS (keep it simple stupid) aproach and speed of delivery using existing trained staff. We are spending time and money making our Flex controls like interactive reporting tool to be available as Flex component for AJAX – there is huge market there as AJAX can’t compare with the power and reliability of mash-ups.
Marketing at Adobe needs to take higher aim with this product�- they need to appeal to the right people�NOW to make the product success – and these are the people way outside of Macromedia / Adobe camps.
Sincerely,
Anatole Tartakovsky

Comments