Archive for May, 2010

Grey Line

I’m finishing the third(!) week of teaching Flex. The first half of June I’ll spend doing some regular consulting work, and then another two weeks of corporate training.  The use of Flex technologies is picking up in the corporate world, but hiring managers are clearly facing challenges caused by the lack of qualified software developers on the market.  Solution? Re-train your own people.

Well, it’s not exactly a complete solution, because after a week of training, a senior Java developer becomes a Flex rookie, but at least these people are familiar with business.

Finding a qualified Flex/Java consultant is literally impossible. Enterprise HR managers pretend not knowing that an hourly rate is the only perk consultants  have. Corporations don’t offer competitive rates. Our consultancy has a couple of job requests for Flex/Java consultants from a long term customer from Wall Street, and we’re interviewing people with a little hope to find the right consultants for the money offered for these positions.

Train your own people regardless of what background they have. Recently, I had a student with no practical programming background. I figured it out after he asked me to “explain the benefits of casting”. But this guy was really motivated, and I’m sure he’ll make it.

Our company already has a request to teach Flex to a group of Cobol programmers in September. This should be fun.  The first day should be spent on teaching the concepts of object-oriented programming. So what? Anyone who wants to learn will.

Will the demand for Flex developers sustain? This week I’ve presented at Atlanta Flex User Group.  Here’s one of the questions I got after the talk, “Does your company experience lower demand of Flex consultants in the enterprise world because Flash is not supported on iPhone?”  Absolutely not.  Rich Internet Applications are being developed at full swing regardless of the fences built by Steve Jobs. iPhone is not a threat for the Enterprise RIA.  The only thing that bothers me is the slowness of Adobe in offering new releases of Flex and related tools and technologies.

While everyone is busy talking about the latest news from the iPhone battlefield or how Android is doing, I’m closely watching Microsoft.  As expected, they are becoming the real competition to Adobe in the field of the enterprise RIA. While Adobe is talking about new Designer-Developer workflow, Microsoft implements it. The penetration of Silverlight runtime is over 50%. Give them another year to build up the muscles…

Anyway, are you looking for senior enterprise Flex developers? Me too.

Yakov Fain

Comments (5)

 

Grey Line

1.    Last year, the Princeton Java Users Group  that I’m leading became homeless. We lost the host that was giving us a place to meet and pizza.
2.    Last year, New Jersey Flex Users group ceased to exist – not sure why.  The Garden State, where every other person is in IT deserves better.
3.    Being a proud Jersey resident, the next week will be the second time I’m presenting this year… at Atlanta Flex User Group Atlanta. No, it’s not Atlantic City, NJ.  It’s Georgia.
4.    Flex and Java nicely compliment each other in lots and lots of real-world enterprise projects in the greater New York Area, which wouldn’t be able to run its IT operations without us, Jersey hero commuters who spent 3.5-4 hours a day getting through the tunnels and bridges to that famous island and back.
5.    Recruiters have hard times finding developers with Flex/Java skills.
6.    I’m ready to create and run a new Flex and Java Users Group in Central Jersey as soon as someone will offer a place to meet and pizza to eat. It has to be a meeting room that can fit at least 30 people.  This is all I’m asking for. The hosting company will be entitled for opening 5 minutes of each meeting announcing their products, or job openings. And people who attend users groups are real developers! If interested, send me an email at yfain11 at yahoo.com.
7.    My role is to bring qualified presenters and present myself on the subjects that interest enterprise Flex and Java Developers.
8.    All of the above is a just part of my contribution to Flex and Java community.
9.    Now let me take care of the bills. I’ll be running a week of live online introductory Flex 4 training on the week of July 12, 2010. You can attend without the need to travel.  For details and registration visit this site.
10.    The next one-day advanced public Flex workshop on modularization of Flex applications will take place in Lansdowne Resort, VA on July 27, a day before the CFUnited conference starts in the same venue ( this workshop is not affiliated with CFUnited). Here’s the registration page.

11. In August-September I’ll be running a week of online live Intro to Java class – stay tuned.

That’s all folks. See you in one of the meeting rooms.

Yakov Fain

Comments (4)

 

Grey Line

When a new version of a software is released, the old version lives for a while and its creators usually care about supporting it. Yesterday, after reading about the release of Cairngorm 3, it’s clear that Adobe Consulting ignores this rule.

For those who are not following Cairngorm evolution, I want to remind that there was a framework called Cairngorm 2, that was a library of classes (built on Model-View-Controller architecture) to be included in the Flex application. I never agreed with the architecture of Cairngorm 2 which was acting as a Crazy Glue and lead to generation of monolithic applications based on global singletons. People who follow my writings or were attending my presentations at various conferences know that during the last four years I was openly stating that Cairngorm 2 has more cons than pros. For example, here’s the just one of of these occasions – a video of the panel on enterprise frameworks at Adobe MAX 2008 (after this blog, I doubt that I’ll ever be approved as a MAX speaker again).

Now, when I looked at the design of a product that’s now branded as Cairngorm 3, it’s clear that Adobe assigned to this project the right engineers (i.e. Alex Uhlmann) and there is hope that this methodology (it’s not an MVC framework any longer) may produce or include useful component libraries.

My first problem is that the Cairngorm 2 has literally disappeared from the face of Earth (the only trace found is the site cairngormdocs.org that has some old documentation).

My second, and more serious problem is that Adobe Consulting up till today has never made a statement that selecting Cairngorm 2 was a wrong path. There are lots of enterprises that some time ago started using Cairngorm 2 (recommendation by Adobe Consulting) just to find themselves with a large monolithic application at hand that took long to download and was difficult to modularize.

A couple of years ago, I lead a large enterprise project for a customer that I won’t name, but will provide some relevant technical details. When I joined, the team was already 5 months into the project. This consumer facing application was producing one 5Mb SWF file. Just recompiling the application in Flex Builder was a lengthy project. I started to look at ways of modularizing this application so the first screen would come up sooner than 90 seconds for customers sitting on DSL connections.

Sure enough, the project has been built with Cairngorm 2 by advise of some engineer from Adobe Consulting (not to be confused with Adobe Flex team). The Cairngorm’s global class FrontController is expected to be a registry for all possible events that travel through the system let alone tons of classes and boilerplate code written just to support that life cycle of the framework itself.

My first suggestion was to start modularization with removing Cairngorm. They asked, “How much?” It would take two man-weeks worth of work, but they didn’t have time for this. To make the long story short, we had to modularize the application in a non-kosher way – the main SWF had a knowledge about all events in every module. Changes in a module’s code can lead to changes in the main applications. Tight coupling in action.

I’m sure there are lots of enterprise teams that were similarly misguided and were marching in a wrong direction under the Cairngorm 2 banner.

With the release of Cairngorm 3, the Cairngorm 2 has vanished. I’m sure, if you’ll hire a private eye, you’ll find its code (has not been updated from about three years) in some SVN repository. But this is not how the new version of the enterprise software should be released.
I’d like Adobe Consulting to state loud and clear, “If your team started development of a large enterprise project with Cairngorm 2, please stop. This was our mistake, and the sooner you switch to Cairngorm 3 or any other lighter framework the better.”

Will it happen? Let’s wait and see.

Yakov Fain
P.S. The views and opinions expressed in this blog are purely my own and don’t represent views of my employer

Comments (31)

 

Grey Line

Yesterday, I’ve presented at Flash and the City conference in New York City on Clear Toolkit, as an open source alternative to Adobe LiveCycle Data Services. Half of the presentation was about features and tools od Clear Toolkit 3.2, and then I’ve demonstrated our new Flex 4 spark-based DataForm container with convenient layout manager, data provider and both form and form item level validators.

The last portion of the presentation was about how to deal with unreliable messaging of BlazeDS. Interestingly enough, some people from the audience were complaining that even in LiveCycle Data Services 3, the reliable messaging part is not documented and it’s hard to get support from Adobe. If you don’t know what unreliable AMF messaging is, read this post. We already had a number of projects started form a phone call, “One of our clients doesn’t receive responses to RemoteObject requests…once in a while. Others seems to be fine. Can you help?” Yes we can.

You can download the presentation slides here.
There were no video recording crew at the conference, but due to multiple requests, I’ll record this presentation and publish it as a screencast in early June.

My special thanks to Adobe for raising LCDS prices – this means more business for us as more and more corporate clients are looking for reasonably priced solution and architect their projects using BlazeDS.
Farata Systems will gladly help our clients in building robust, scalable, and reliable Flex-BlazeDS-Java applications.

If you are new to Flex, consider taking this 5-day live online training course.

Yakov Fain

Comments

 

Grey Line

Every month we get calls from new Flex clients with exactly the same question: can we help to fix strange networking problems. The application they fully tested exhibits very strange problems for some users once released in the wild. Here is a brief list of the problems they have seen:
1. Missing packages coming from client going to the serer (majority of the problem cases)
2. Missing responses ( coming from server to client)
3. Out of sequence execution of the server calls
4. Duplicate requests to the server
Interesting enough, the popular belief is that TCP/IP protocol takes care of all these problems and it is not responsibility of the developers to deal with these issues.

Unfortunately, living with the problems above is a typical WAN way of life, and TCP/IP protocol provides reliability on LANs only. To make the matters worse, applications are tested on LANs and extremely reliable “local WANs”. As a result, they are not tested at all for this type of the issues. And with thousands of small AMF requests per session even fraction of percent of lost packages affects the reliability of application.

Once application is in this state, typical response from development teams is to add application error handling and do more testing. Unfortunately, this testing is also done on LAN, and reliable WANS. Plus due to the non-deterministic nature of the lost packages conventional testing does not help much.

The advice I usually give to our clients is to fix the problem on communication protocol level (in a layer between the Flex Framework and Application) rather then in the application code. Usually it involves creation “ReliableAMFChannel” ActionScript class on the client side and customized Java Endpoint on the server side. These classes are primarily responsible for the following:
1. Keeping copies of the original requests(client) and responses (server) till they are confirmed or answered by the other side.
2. Managing resending of unconfirmed requests/responses after certain timeout.
3. Filtering out duplicate/already executed requests/responses
4. Fixing the order of requests/responses to prevent execution “out of order”

Usually it is implemented as 5-10 days project to integrate reference implementation code with the client codebase, provide resynchronization logic (login/reconnect) and timeouts’ optimization. I usually recommend to move long running requests to messaging as a part of the same effort as those have a long list of their own related issues, which I’ll cover in the next post.

If you are new to Flex, consider taking this 5-day live online training course.

Sincerely,
Anatole Tartakovsky

Comments