Archive for July, 2008

Grey Line

BlazeDS is a poor man’s version of LCDS. As per the documentation, it doesn’t support real-time messaging protocol, may not scale well if the number of users will increase, no server-side push, no data management services support. But it has one huge advantage over LCDS. It’s free.
Surprisingly enough, our enterprise customers that theoretically are loaded with cash, also like it free because many projects have limited budget.
That’s why Farata’s engineers started experimenting with BlazeDS trying to squeeze a little more juice out of it.

We’ve  extended BlazeDS to provide additional streaming endpoints utilizing NIO/suspend/resume API that are offered by the new Servlet 3.0 API on one of the leading open source NIO servlet containers.  This solution allows us to do the server-side push in BlazeDS.

We are planning to set up some benchmarks and hit it hard, but we expect to see this configuration live and healthy with  10K+ simultaneous messaging clients. So far, all Adobe samples work with these endpoints without any changes to the Flex code – pure drop in server replacement/extension.
By the end of the year, when Servlet 3 becomes accepted standard every leading JEE provider can capitalize on it.

We are going to show a demo application that pushes the BlazeDS envelope during the upcoming Enterprise Flex Symposium in New York City on August 19. 2008.

Hope to see you there,
Yakov

Comments

 

Grey Line

Yesterday, I’ve presented on comparing several Flex frameworks at New York Flex Users Group. More than 50 people showed up, which proves that this was an important topic. By the end of the presentation the temperature in the room has increased because an innocent preso turned into a heated discussion.

Without going into details and naming names, I’d like to make some points, and share with your some observations.
Before starting the presentation, I asked the following questions:

1. How many people know Java. About 60% raised their hands. I was expecting around 80% since Flex works nicely with J2EE.
2. How many people know design patterns? Only 40% raised their hands this time. This is somewhat troublesome and explains why people have problems understanding Flex frameworks.

Last Monday, I’ve been teaching a one day hands-on class on Cairngorm. Without discussing pros and cons of Cairngorm, I believe it’s an easy framework to learn assuming that you understand several design patterns. After about 5 hours (including hands-on exercises) students had a pretty good understanding how to use this framework.
But I remember the sentence from of one of the recent blogs – it was something like “Is this just me being stupid or you also can not get Cairngorm?” It’s not about being stupid, it’s about understanding design patterns.
We need to distinguish between architectural frameworks and component libraries.

Architectural frameworks don’t give you additional functionality like better components or code generators, but rather allow you to re-arrange (refactor, organize) the code of your applications into separate tiers. Why you may want to consider one of such frameworks? We live in the world when a group of a dozen developers that works on the same project has different skill sets (read my lips: most of them are junior) and project managers try to lower the risk of project failure by limiting the responsibilities of each developer. Mary, you are responsible for developing just the UI for these ten views. Srinivas, you are responsible for programming business logic in ActionScript. Manoj, your task is to provide and test remote services supplied by the Java-based content management system and some Web services. Project managers sleep better knowing that if Manoj would leave the project, he can easily find another developer who will pick up his piece.

If this sounds familiar, pick an architectural framework that is not too intrusive, which means it doesn’t require developers writing too much of a boilerplate code just to support the life cycle of the framework itself. The other consideration is how it supports modularization. In no time you’ll find yourself in a situation when the size of your SWF gets out of hands and the users need to wait for more than a minute just to see the first screen of your beautiful RIA. And finally, what’s the learning curve of this framework for YOUR developers based of their current skills.

The other approach to project development is to use just the Flex framework in conjunction with various component libraries that increase productivity of developers by offering additional functionality to existing Flex component, deploying various code generators and wizards. If you have at least one senior Flex developer in your team, this is a pretty safe way to run the project.

At the end of yesterday’s discussion several people expressed an interest to have one of the next meetings as a panel with several people that represent different points of view about the usefulness of various frameworks. It should be an interesting shootout.

I’ll repeat this presentation at NJ Flex users group on Aug 20, in NYC on Aug 19 as a part of the Enterprise Flex Symposium, and in Philly’s Flex users group on Sep 11. Come on over and let’s fight :)

This presentation will serve as a basis for the chapter of an upcoming OReilly book “Enterprise Development with Flex”.

If you’d like to host this topic in your Flex UG, write me an email off like. I travel a lot and we may be able to arrange this presentation.

Yakov Fain

Comments

 

Grey Line

Typically, when you are looking for a job as a Flex developer, knowing just Flex is not enough. A quick search using keywords Flex Java on dice.com returns more than 450 jobs.  What if you are not familiar with any of these programming environments?   What if you are a Web designer planning to better understand what’s happening after the user clicks on that button? If you are a development manager who needs to manage a team of Java and Flex developers, it’s good to better understand their lingo too.

We’ve designed a five-day training class that will fill this gap in your skill set. The first two days is an into to Java and basics of creating of Java Web applications.  The next three days is about learning Flex and how to make it communicating with Java on the server side.

I’ll be teaching this public training in Edison, NJ on the first week of September (details at http://www.eventbrite.com/event/144267508 )

If you’d like to have this training delivered in your organization, please get in touch with me via email: yfain at faratasystems.com.

If you are interested in just Flex training, check the current schedule of classes at th eleft sidebar at http://flexblog.faratasystems.com.

Yakov Fain

Comments

 

Grey Line

I’m happy to spread the news – mbusa.com is live! It looks gorgeous, and I’m very proud to be a part of the team that was working on this project (Farata Systems was leading this project on the Flex side).  This is Flex 3 application, and we had to be very creative to make sure that this it doesn’t feel heavy even though it had about two hundred views and dozens of megabytes of beautiful graphics.

As much as I’m trying not to get too attached to any software, I feel proud that we were a part of the team that was able to create this work of art. There is a couple of bugs here and there, there are some other improvements to be made, but overall, it’s a work of art.

mbusa.com

This blog is not an official press release, and we hope to write with MBUSA folks joint whitepaper  explaining technical details of this large-scale consumer facing Flex application. My big thanks to all members of MBUSA team that worked on this project. Special thanks to Farata’s own great software developer Valery Silaev! It was a top notch performance!

For me, it was a very interesting experience, because I joined this project right after completing another one (Flex, LCDS, and Java) for a foreign exchange trading company. That was absolutely different Flex. That project had a trader’s screen and a couple of others, no shiny automobiles or videos. But the main challenge there was to enhance Flex communication protocols to improve reliability in message delivery and add quality of service information to packets travelling along the RTMP channels. On this project I was working with our own Mr. Anatole Tartakovsky who was simply unstoppable. And Flex proved to be well designed, and allowed us to bend it a little bit to accommodate the needs of this application.

After completing a number of different enterprise-grade projects, I can attest that Flex framework is a great product for wide variety of rich Internet applications.

Yakov Fain

Comments

 

Grey Line

I’ll be making a presentation Comparing Flex Frameworks at New York Flex User Group on July 24, 2008. User group meetings are free to attend, but require registration. Here’s the description of this session:

A year ago, there was Flex and there was Cairngorm. Today, Flex developers use about a dozen frameworks.  The goal of any framework is to make the process of software development and maintenance easier. There are different ways of achieving this goal. Some people prefer working with frameworks that are based on the Model-View-Controller pattern, while other like dealing with class libraries of components. Each approach has its pros and cons. During this 80–minute session we’ll go over the same application that was built using Cairngorm, Clear, PureMVC and Mate frameworks.

This presentation is based on a chapter of the upcoming OReilly book “Enterprise Flex: Best Practices”, which I’m co-authoring with two other Flex experts of Farata Systems.  For those who think that I should be more modest and shouldn’t call myself  Flex expert, here’s a quote by Niels Bohr, a Nobel Prize winner: “An expert is a person who has made all the mistakes that can be made in a very narrow field”. Now I make a lot less mistakes in Flex as after completing several enterprise Flex/Java projects things are getting a lot clearer.

I’ll re-run the same presentation on September 11, 2008 (tentatively) at Philly’s Flex User Group.

This presentation is also included as a part of my Cairngorm training class on July 21, 2008 in NYC.

Finally, consider attending the first Enterprise Flex Symposium on August 19, 2008 in NYC. Enter the discount code flexthirty to get 30% off the price (new registrtants only). This small-scale technical event will feature the following presentations:

Comparison of Flex Frameworks
Enterprise Portals with Flex: Challenges and Solutions
Open Source Networking  Solutions for Flex Applications
Free Eclipse Plugins for Developing  RIA with Flex
Developing  Flex applications for LiveCycle ES
Enterprise Reporting with Flex

For more Flex-related training events, please visit our blog at http://flexblog.faratasystems.com/

Yakov Fain

Comments

 

Grey Line

I’m continuing evaluating of Flex frameworks and drawing exercises. After drawing Cairngorm and Mate, I’ve explored and drew the diagram of the PureMVC workflow. This diagram is not a replacement for the conceptual diagram included in the well written documentation of PureMVC, but it may give you a little better understanding of what’s going on under the hood. As usual, I’d appreciate any feedback or corrections that you may have.

Overall, PureMVC seems to be over-engineered. The learning curve is steep, too many tiers, dependencies, singletons. This frameworks has not been written specifically for Flex, but rather with a hope to be used in other languages as well. While I understand the desire of Cliff Hall to create a framework that’s works for everyone, this stopped him from taking advantage of what’s offered in Flex only.

I’m not a big fan of Cairngorm, but it’s a lot easier to learn than PureMVC, and at least it delivers on the promise to let people quickly get up to speed on large projects. Both frameworks don’t offer much other than separation of concerns, but Cairngorm would allow you to hire more junior programmers than PureMVC. If interested, I’ll be teaching an Intro to Cairngorm class in NYC on July 21.

Farata Systems is preparing a one day online hands-on workshop that will offer comparison of four Flex frameworks. If you don’t want to go through nitty-gritty details, consider attending Enterprise Flex Symposium in New Your City on August 19, where I’ll do a higher-level comparison of frameworks (readers of our blog can get 50% off the price by entering the discount code flex3halfprice).
Thanks,
Yakov Fain

Comments

 

Grey Line

We’ve uploaded the beta version of our first Facebook application called Food Dial. Food Dial is not just a book of recipes. Here’s the big idea – you came back home, tired and hungry. Start the Food Dial application and open the fridge…Here’s the red pepper.  Turn the dial with food categories (we assume that you know that red pepper belongs to veggies). Drag it inside the dial and you’ll see all recipes that include red pepper as ingredient of a recipe. Keep going…Found an onion? Drag it in. Now, the recipe list shows only those recipes that use both red pepper and the onion.

Food Dial

You can browse and upload your own recipes, rate and tag them with further filtering using the tag cloud on the right. There is the area for ads under the tag cloud, if say a medical doctor wants to advertise her services for those who are interested in recipes for diabetics.

For us, this application is a proof of concept, our first experiments with Facebook. The client portion is  developed it using Adobe Flex, the server side is taken care of by Java under Tomcat and MySQL Server DBMS. We also wanted to show that Farata Systems is not only about developing rich but boring Internet applications for enterprises, but we do stuff for fun too.

If you have Facebook account, search for this application by entering Food Dial in the search box. If you don’t, just visit this URL: http://www.myflex.org/fooddial/FoodDial.html

This application is in beta – we’d love to hear your suggestions to improve the Web design of Food Dial. So far it looks as typical Flex application. What would you change to improve its usability? All ideas are welcome.

Please add this application to your Facebook profile. Help us to see the viral nature of social networks in action.

Comments

 

Grey Line

It’s 7AM. This month I work from home, which has an obvious benefit: you don’t need to rush to catch the bus, you can brush your teeth a bit later, and you have time to think… about design patterns. There is a number of Flex Adobe Photoshop frameworks that are based on MVC. In project teams, MVC architecture helps to ensure that the person who creates the view doesn’t need to know where is its model. Here’s a quick and stupid morning question, ”Why?” Have you ever had time to ask yourself not “How?” but “Why?”.

Typically, using MVC architecture is a given, and authors of a specific framework explain how they separate model and view development.

Such separation definitely makes project managers happier. Here’s another morning thought – is there such a thing as happy project manager, Acrobat but it’s a subject of a separate blog.

Visualize yourself in a project kick-off meeting. The manager goes,

Guys, our great distributed global team starts a new and exciting RIA project. Joe and Mary, you’ll be creating views for the project. Our Bangalore partners will be responsible for the model part. But the thing is that we do not know who these people are just yet. Besides, because of high turnover, we need to architect our application in a way that any software developer who’ll ever enter the building can quickly start coding business logic without even knowing his neighbors in the next cube. They just need to know where to place their if-statements. The plumbing has to be done by the framework.
I also need to be able to create a project plan to easily quantify the work done by every person on the team.

Divide and conquer. Is this a real-world situation or we are playing some kind of a game here? If you are in this situation, definitely select and use one of the MVC frameworks, otherwise your project is doomed.

But if you have a luxury of working with people who understand well designed Flex framework, you may survive without using additional MVC constructions on top of it. Please note, I do not dispute MVC architecture of Flex components, i.e. separating data providers and List based controls. BTW, I see M and V here but who’s the C here? The underlying data binding?

OK, I spit it out! Let me go an brush my teeth and make a cup of coffee, or should I do it in the reverse order? I own this Delonghi machine that automatically grinds the beans and brews the coffee. Can someone pleaseeeee recommend me the bean brand that will help my machine produce the coffee that looks smells as good as the one brewed in any Paris bistro? Do I have to fly to France for a good cup of coffee?

Yours truly,
Yakov Fain

Comments

 

Grey Line

I’ve been testing Mate Flex framework.  It’s not intrusive, promotes building application components in a loosely-coupled way and implements design pattern Dependency Injection.  At this point Mate is in Alpha, but the way it was designed looks very encouraging, and people who are into MVC should definitely try it out.

The framework allows various ways for connecting model, view and controller, but I drew this diagram to illustrate its data flow that uses injectors.
Mate Framework Diagram

Is this diagram easy for understanding? I’d appreciate your feedback.

Thanks,
Yakov Fain

Comments

 

Grey Line

Our new book “Enterprise Application Development with Flex” has been approved by the editorial board and Adobe Flex team. The co-authors of this book work for Farata Systems: Victor Rasputnis, Anatole Tartakovsky and myself. Here’s the brief book outline

Ch1. Comparison of Flex Frameworks
The goal of any framework is to make the process of  software development and maintenance easier. There are different ways of achieving this goal. Some people prefer working with frameworks  that are based on the Model-View-Controller pattern, while other like dealing with class libraries of components. Each approach has its pros and cons. In this chapter we’ll build the same  of how to build the same application using the frameworks listed below.

Ch2. Selected Design Patterns
Design patterns suggest solutions to a common problems that arise during software development. Flex is  domain-specific tool that’s aimed for creating rich UI for the Web ,and in this chapter we’ll discuss specifics of selected  design patterns when applied to creation of UI with Flex .

Ch 3.Building Enterprise Framework
Business Annotations;  Extending DataGrid and Advanced DataGrid

Ch 4.Life Cycle of Enterprise RIA Projects
Typical Enterprise RIA projects are developed by mixed teams of the client and server-side  developers.  This chapter covers a variety of topics that development managers and team leaders are facing: what skill sets are required for the project ,how to  set up a version control  repository, is there a way to  automate creation of build and deployment script. We’ll also cover the best practices for dealing with  technical issues like memory and CPU utilization, logging errors across the tiers to make production support of the  users more  efficient.

Ch 5.Live Cycle Data Services. Best practices
LCDS under the hood; Server  push with Real-Time Messaging Protocol

Ch 6.Open Source Networking  Solutions for Flex Applications
Open sourcing of Flex framework in general and its communication protocols and server-side components in particular play an important role in adoption of Flex by enterprises. While large scale applications most likely will be empowered by LCDS, the smaller ones will find open source server-side components very useful.  BlazeDS is an open source implementation of the highly-compressed AMF communication  protocol by Adobe, and  this chapter will unleash its power  illustrating both polling and server-side push techniques with this cost effective and efficient solution for RIA. Third-parties offer their versions of AMF implementation and we’ll provide a brief review of such software.
We’ll also cover AMF, data polling with BlazeDS, server side push with BlazeDS, and third party AMF implementations

Ch 7.Enterprise Portals and Workflows with Adobe LiveCycle

Ch 8. Performance considerations
While RIA with Flex are more engaging and user friendly than their DHTML peers , they have to be architected not as monolithic slow-loaded monsters, but rather as modularized applications that initially load only the minimal amount of code with lazy loading of the rest of the modules on as-needed basis. In this chapter we’ll talk about actual vs. perceived performance improvements  and  various techniques of splitting the project into a set of loosely coupled modules and libraries, which besides minimizing the size of the code helps in splitting the work between different developers working on the project .

Ch 9. Workforce Automation with AIR
Data Synchronization  (connected/disconnected modes),Google Maps integration

Ch 10. Enterprise Reporting with Flex
Reporting  is often one of the most time consuming tasks in developing  of many enterprise application. Just using Flex printing API would require allocation of substantial budget and human resources.  In this chapter we’ll cover the basic printing techniques as well as introduce ClearBI, a freely available Web reporter for Flex applications.

Since OReilly encourages blogging about the book, we’ll be publishing bits and pieces during the next six-eight months required to write these 600 pages. The chapters will be available online on Safari as rough cuts as they are ready.

Stay tuned,
Yakov Fain

Comments (4)

 

Grey Line

I’ll be teaching a five-day public Flex 3 class in  New Jersey, my home state, during the last week of July. The courseware for this hands-on course was created by Adobe.

During the first three days we’ll cover creation of various UI components and effects while building an online store.  The last two days are about various options of connecting front and back end of RIA written with Flex.

For more details and registration visit this page.

Yakov Fain

Comments