<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Farata Systems &#187; Anatole Tartakovsky</title>
	<atom:link href="http://flexblog.faratasystems.com/author/anatole-tartakovsky/feed" rel="self" type="application/rss+xml" />
	<link>http://flexblog.faratasystems.com</link>
	<description>A blog about our experience with Adobe Flex</description>
	<lastBuildDate>Thu, 02 Feb 2012 20:21:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Future of Mobile Technologies</title>
		<link>http://flexblog.faratasystems.com/2011/08/14/the-future-of-mobile-technologies</link>
		<comments>http://flexblog.faratasystems.com/2011/08/14/the-future-of-mobile-technologies#comments</comments>
		<pubDate>Sun, 14 Aug 2011 15:56:09 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=1183</guid>
		<description><![CDATA[Yesterday I was giving a talk and the demo at Farata&#8217;s Fourth Annual Symposium on Software Development. The title of this presentation was &#8220;Using Mobile Technologies in the Brave New World of Computing&#8221;. 

It was a mix of the presentation slides an a live demo of an enterprise application SureLC (an automation of insurance agents&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was giving a talk and the demo at Farata&#8217;s Fourth Annual Symposium on Software Development. The title of this presentation was &#8220;Using Mobile Technologies in the Brave New World of Computing&#8221;. </p>
<p><a href="http://flexblog.faratasystems.com/wp-content/uploads/Anatole.jpg"><img src="http://flexblog.faratasystems.com/wp-content/uploads/Anatole-300x200.jpg" alt="" title="Anatole" width="300" height="200" class="alignleft size-medium wp-image-1185" /></a></p>
<p>It was a mix of the presentation slides an a live demo of an enterprise application SureLC (an automation of insurance agents&#8217; routines) running on a desktop, Motorola Xoom, and Apple&#8217;s iPad shown on the photo above. During the first part of this presentation I was giving a brief overview of today&#8217;s mobile landscape and highlighted some issues that any enterprise development shop moving to mobile should consider. </p>
<p>The quality of <a href="http://myflex.org/presentations/symposium4/Anatole.mp3">this audio (61Mb)</a> recording is not perfect, but I hope you may find some of the content useful.</p>
<p>The slides of this presentation can be downloaded <a href="http://myflex.org/presentations/symposium4/Anatole.zip">here</a>. </p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/08/14/the-future-of-mobile-technologies/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://myflex.org/presentations/symposium4/Anatole.mp3" length="64286926" type="audio/mpeg" />
		</item>
		<item>
		<title>Systematic Approach to Mobile and Web Development</title>
		<link>http://flexblog.faratasystems.com/2011/08/07/systematic-approach-to-mobile-and-web-development</link>
		<comments>http://flexblog.faratasystems.com/2011/08/07/systematic-approach-to-mobile-and-web-development#comments</comments>
		<pubDate>Mon, 08 Aug 2011 00:35:05 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=1169</guid>
		<description><![CDATA[     This Friday I&#8217;m making presenting at Farata Symposium on mobile development. Initially I was planning on just extending the same presentation I was doing in Denver @ 360Flex &#8211; showing the mobile version of a sales automation application and then presenting guidelines the developers can follow to build new mobile [...]]]></description>
			<content:encoded><![CDATA[<p>     This Friday I&#8217;m making presenting at <a href="http://www.eventbrite.com/event/1771493585">Farata Symposium</a> on mobile development. Initially I was planning on just extending the same presentation I was doing in Denver @ 360Flex &#8211; showing the mobile version of a sales automation application and then presenting guidelines the developers can follow to build new mobile applications.<br />
<br />
      Yesterday, I tested my presentation with a small audience of senior enterprise developers to see if I address the real needs of enterprises. After all, my demo was based on experience with startups and their perceptions on what is important might be slightly different.<br />
<br />
   It seems that the current IT thinking  on migration path is heavily based on gradual replacement of the pieces of the puzzle (a complex enterprise application) on as needed basis. Running existing applications via remoting technologies like Citrix is also not feasible. This piece meal approach to technology shift would be difficult to implement and would lead to bad user experience on mobile and portables. It would cause multiple versions of UI being developed and maintained at significant extra cost by independent teams. Scope of applications would be reduced to accommodate only certain target audiences with very little reuse among platforms. In short, such approach will result in the same fiasco as with Java &#8220;run everywhere&#8221; approach multiplied by number of form factors and platforms.<br />
<br />
  After this test run I decided to drastically shift the focus of the presentation. We will start with the broad overview of the changes that are already happening or can be expected within the next 6-9 months. I will cover the challenges that different form factors and platforms introduce to a typical enterprise UI. I&#8217;ll  will go through each artifact of the application design: Themes, Skins, Layouts, Controls to explain the role and options they present in solving the overall puzzle.<br />
<br />
Next we will discuss the personal cloud that is being built with all the new always connected devices: from phones to TVs. Finally I will present out-of-the-box solutions that developers can use to address all the challenges.<br />
<br />
In short, I will show how to avoid the painful process of migrating to the new platform by caring too much luggage, and how easy it is to build unified modern interface. I&#8217;m sure,  this will save you, the mobile developer, much more then a day you&#8217;ll spend attending this event. If you are in New York City, consider attending this event and be a part of our informal technical discussion.<br />
<br />
Sincerely<br />
Anatole</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/08/07/systematic-approach-to-mobile-and-web-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Brave New World of Prosumer Experience</title>
		<link>http://flexblog.faratasystems.com/2011/07/05/brave-new-world-of-px</link>
		<comments>http://flexblog.faratasystems.com/2011/07/05/brave-new-world-of-px#comments</comments>
		<pubDate>Tue, 05 Jul 2011 05:34:47 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=1126</guid>
		<description><![CDATA[The long weekend of non-stop rainy weather presented rare opportunity of organizing the thoughts on the new developments in the industry and prepare to my presentations at the upcoming Fourth Farata Symposium ahead of time. Over the course of two days the consolidated theme emerged &#8211; these projects I&#8217;ll demo at the symposium are going [...]]]></description>
			<content:encoded><![CDATA[<p>The long weekend of non-stop rainy weather presented rare opportunity of organizing the thoughts on the new developments in the industry and prepare to my presentations at the upcoming <a href="http://www.eventbrite.com/event/1771493585">Fourth Farata Symposium</a> ahead of time. Over the course of two days the consolidated theme emerged &#8211; these projects I&#8217;ll demo at the symposium are going to be about Prosumer eXperience (PX).</p>
<p>Every element of the software I will be showing has to be upgraded from the plain vanilla Flex/BlazeDS/AIR functionality to adjust and match the target audience. The efforts included creation of a brand new sets of controls, mobile devices integration, modifications in communication protocols, PDF/files integration. Everything needs to be consumer-oriented &#8211; with touch interface, simple navigation, integration with voice / phone/location services, contacts, etc.  And at the same time it should allow repetitive use by an experienced user in the speed of the back-end systems so UI should not stay in a way of productivity. The conventional approach to the user experience fails. Finally, the same application has to be available on all platforms &#8211; PCs, Macs, tablets, TVs &#8211; to be really accessible by consumers. Its a long journey, and we are not even a half way there.</p>
<p>Let me define this  &#8220;pro&#8221; in the term prosumer.   The term was coined by futurologist Alvin Toffler in 1980,it&#8217;s not commonly used today. Loosely, Toffler&#8217;s &#8220;proactive consumer&#8221; prosumers were consumers who were predicted to each become active to help personally improve or design the goods and services of the marketplace, transforming it and their roles as consumers. Basically it is another term of user driven approach, with user feedback as a main driver for new features/streamlined workflow. Simplicity is the king, and the current level of service desk/community driven software makes the whole process both simple and pragmatic.</p>
<p>The most common usage of the term describes the prosumers as enthusiasts who buy products that fall between professional and consumer grade standards in quality, complexity, or functionality. One of my applications (it&#8217;s for insurance salesmen) is specifically targeting 250K-1M people that are in that category. I was amazed to find out how many people in banks, investment companies, etc. fall in this category of users.</p>
<p>Finally, the &#8220;producing consumer&#8221; prosumer creates goods for their own use and also possibly to sell. Wikipedia states it is uncommon usage. I respectfully disagree. At this stage, we all are producing consumers of Google, Amazon and other services. It would be stupid not to capitalize on users experience in our client&#8217;s domain field. My post graduate work was on expert systems. I will be showing how AI built upon rule-based expert system for financial services are affected by facts &#8211; statistics and field feedback &#8211; to produce the results that actually work.</p>
<p>PX is an upgraded, almost a back-office grade software short of administrative and final approval functions allowing users to achieve more of what they want without training with access to a decision making process of the best in business and with amazingly simple interface. As you decide to go down the rabbit hole, more information used to make decision is exposed allowing you either take different turns or ejecting you into different hole. Think of it as a continuous search based process with context that becomes your product &#8211; a kind of a shopping cart. Think of the process of buying a new computer when you start with buying a laptop and end up with a server and tablet or vice versa &#8211; it&#8217;s based on what you really need.</p>
<p>Prosumers are building their world of information, and these networks (unlike the social ones) can become extremely wide-spread and very sophisticated. While Google+ is aiming @ consolidating facebook, tweeter, meetup and linkedin in a better connected net, its search services or verticals are working across all the users, providing much greater value. Capturing the information and applying similar approach becomes the fashion of the day and a foundation of the new business models.</p>
<p>Sincerey,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/07/05/brave-new-world-of-px/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RC Flex 4.5 Hits and Misses &#8211; Part 2</title>
		<link>http://flexblog.faratasystems.com/2011/04/14/rc-flex-4-5-hits-and-misses-part-2</link>
		<comments>http://flexblog.faratasystems.com/2011/04/14/rc-flex-4-5-hits-and-misses-part-2#comments</comments>
		<pubDate>Thu, 14 Apr 2011 05:31:00 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=1057</guid>
		<description><![CDATA[In the previous post  I mentioned that Farata developed View-based application running from exactly the same code in the desktop, web and mobile. Does it mean that we take portability above all? Not at all. We are simply pragmatic.  And from the same point of view let me disagree with the portability when [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post  I mentioned that Farata developed View-based application running from exactly the same code in the desktop, web and mobile. Does it mean that we take portability above all? Not at all. We are simply pragmatic.  And from the same point of view let me disagree with the portability when it stay in the way of the functionality.</p>
<p>Here my background story for that. Back in 90s, when PowerBuilder and VisualBasic ruled application development, not a single VB or PB application was “pure” one (ie written only in that language/VM) &#8211; they all utilized native C code packaged as DLLs or VBX.  Today, AIR provides great UI engine, but all universe of capabilities &#8211; quality camera, audio, telephony, notifications, great 3rd party native libraries are out of reach. If I do not use them for the sake of portability &#8211; I will loose to applications written for particular platform. During my demo I saw peopled wowed when AIR boundaries  disappeared and Android based voice recognition did data entry for the Desktop application.  Yes, I know that  this will force me to pack the iOS version with the different extensions (when iOS support for Flex comes along in June). I am also waiting on C extensibility toolkit from RIM in May.</p>
<p>So, how does Adobe position itself in reference to integration with the native tools? Air application can be &#8220;invoked&#8221; from the native Android code, but not the other way around. The only integration approach is mentioned by James Ward, but it is not a part of the RC for Flex 4.5. The availability of Extensibility Toolkit based on that approach promissed, but no date was given. I think support of integration is a matter of survival. The same goes for &#8220;remoting&#8221; within personal network boundaries? Not supported either. I think it is another gap that Adobe has to fill.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/04/14/rc-flex-4-5-hits-and-misses-part-2/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RC Flex 4.5 Hits and Misses &#8211; Part 1</title>
		<link>http://flexblog.faratasystems.com/2011/04/14/360flex-postmortem</link>
		<comments>http://flexblog.faratasystems.com/2011/04/14/360flex-postmortem#comments</comments>
		<pubDate>Thu, 14 Apr 2011 04:30:05 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=1050</guid>
		<description><![CDATA[I am flying back home and want to share some thoughts on what has been happening in the last 4 days here in Denver. Obviously, you know about all announcements related to Flex 4.5. The sessions were very well prepared and extremely useful for majority of the developers. A lot of information was provided in [...]]]></description>
			<content:encoded><![CDATA[<p>I am flying back home and want to share some thoughts on what has been happening in the last 4 days here in Denver. Obviously, you know about all announcements related to Flex 4.5. The sessions were very well prepared and extremely useful for majority of the developers. A lot of information was provided in more informal sessions. The community was as excited and enthusiastic as ever. And yet I am leaving with a feeling that Adobe’s marketing message is missing the point.<br />
<br />
The main message of the conference was: now you can develop great applications for mobile &#8211; and with minor tweaks it will work on all MOBILE devices from phones to tablets.  I disagree with this message. Concentrating on mobile at the expense of  the desktop is a big mistake. Let me explain.</p>
<p>Our company &#8211; Farata Systems  &#8211; have been working on Flex for mobile technologies for about 16 month now &#8211; on IoS and Android. At the conference I presented the View-based application for insurance agents  that was written with mobile toolkit. Despite the fact that it was written with mobile toolkit, our application does run in browser, desktop and tablet &#8211; all from the same source. We run a small fraction of the app on the phone as well, mostly as a remote assistant to the main application. Here we  do high-tech tricks like letting the customer to sign with his finger (or a felt pen), swipe his credit card, speed up data entry via voice recognition etc.</p>
<p>Unfortunately, one can not develop desktop View-based applications out of the box. We had to substantially tweak the components and skins. And I think this shortcoming will hurt success of the Flex, if it is not addressed by Adobe for the benefits of all developers.</p>
<p>Here is why I think it is crucial. There are about 100K Honeycomb devices sold. By the time Flex will catch up with IoS &#8211; June &#8211; the number of sold iPads maybe will reach 3-4 Millions . My estimate is that less then 20% of the users (in case of our application the clientele are independent insurance agents) would have necessary hardware. However, all 100% have access to web on laptops and netbooks, and 80%+  are allowed to run desktop AIR. We, at Farata, can not justify development of multiple versions of the software for desktop(Air), web (Flex Hero) and mobile (Flex Hero Mobile) &#8211; and I can not imagine many other companies doing so!  Aside of development issues, I can not imagine training and supporting 3 different user experiences (with obviously different UIs).</p>
<p>Not only Adobe has to fill the gap. Developers should adjust as well: as conventional OS-es are becoming gestures based (please see preview of Apples Lion coming this summer) &#8211; and very much like tablet ones,  developers should not design and develop multiple experiences either. I mean they should abandon legacy UI metaphor and deliver seamless experience across platforms.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/04/14/360flex-postmortem/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Time for &#8220;VMWare&#8221; on iP(ad)(hone)?</title>
		<link>http://flexblog.faratasystems.com/2011/03/14/time-for-vmware-on-ipadhone</link>
		<comments>http://flexblog.faratasystems.com/2011/03/14/time-for-vmware-on-ipadhone#comments</comments>
		<pubDate>Mon, 14 Mar 2011 19:44:42 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=1030</guid>
		<description><![CDATA[I am very concerned by Apple&#8217;s stance on application platform control at this point. They are at the point when the competition is actually caught up technologically and in the price segment with Android. In my opinion, their next step should be to promote VMs on iPad platform thus allowing better hardware AND choice for [...]]]></description>
			<content:encoded><![CDATA[<p>I am very concerned by Apple&#8217;s stance on application platform control at this point. They are at the point when the competition is actually caught up technologically and in the price segment with Android. In my opinion, their next step should be to promote VMs on iPad platform thus allowing better hardware AND choice for enterprises. That would really drive iPad acceptance by enterprises as it would allow clean separation of business and consumer functions. I would argue it is needed to allow Apple to sustain the price war and command a higher price without really driving the quality of the hardware in the ground.<br />
<br />
How long can you keep the lock on the platform? My 11 year old son rooted his iPhone 4 within a week after getting it, so did all his classmates. And he is probably one of the most loyal Apple fans I know with most of his toys running on OSX platform.<br />
<br />
So far virtualization of iPhones and iPads was not practical &#8211; those were underpowered devices built for a very short lifespan. Android on iPhone 3 performs really bad, but it is almost usable on iPhone 4. With iPad 2 and iPhone 5 we can expect 2+ years of service before being forced to replace these devices, which is enough for the enterprises to consider them as viable business tools.<br />
</p>
<p>For the first time in the last 3 years I am unloading Apple stock &#8211; almost all of it &#8211; as I believe that their current strategy is slowing the long lasting success. There is the point when the pride of job well done turns to hubris and Apple is crossing that line.<br />
<br />
Sincerely<br />
Anatole</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/03/14/time-for-vmware-on-ipadhone/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Applications Everywhere Part 1. PDF and RIA merge</title>
		<link>http://flexblog.faratasystems.com/2011/03/02/applications-everywhere-part-1-pdf-and-ria-merge</link>
		<comments>http://flexblog.faratasystems.com/2011/03/02/applications-everywhere-part-1-pdf-and-ria-merge#comments</comments>
		<pubDate>Wed, 02 Mar 2011 08:07:52 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/2011/03/02/applications-everywhere-part-1-pdf-and-ria-merge</guid>
		<description><![CDATA[Any outsider who had to work with insurance bureaucracies quickly develops very strong feelings to endless paperwork, fine prints, endless riders and questions. It compounds with the fact that most of information you need to enter is public, not readily accessible or redundant.

Adobe makes probably $1B/year on licenses of PDF technologies. People developed love/hate relationship [...]]]></description>
			<content:encoded><![CDATA[<p>Any outsider who had to work with insurance bureaucracies quickly develops very strong feelings to endless paperwork, fine prints, endless riders and questions. It compounds with the fact that most of information you need to enter is public, not readily accessible or redundant.<br />
<br />
Adobe makes probably $1B/year on licenses of PDF technologies. People developed love/hate relationship with electronic documents. The love portion is mostly caused by the fact that you can view PDFs almost anywhere in a consistent printable format. You hate PDF while trying to use it on mobile devices, try to implement the data entry there, or find the money for the high fees Adobe charges to make your documents editable by consumers.<br />
<br />
In this article I will talk of what seems to be inevitable transformation of PDFs within the next 2-3 years. But first, lets step back 5+ years, when Macromedia and its Flash technology didn&#8217;t belong to Adobe.<br />
<br />
At that time, Macromedia released product called FlashPaper. It would convert any printable and/or Office documents into lightweight flash streams preserving formatting and pagination. FlashPaper had a lightweight chrome to facilitate zooming, pagination and printing  &#8211; it was directly competing with most uses of the Acrobat at the time. The product was discontinued about 6 years ago, and Acrobat as de facto standard went in the opposite direction becoming heavier and replacing most of the internal UI with flex.<br />
<br />
Fast forward to today when we have low power devices with smaller screens – the Acrobat is way too big of a product for them. Adapting to different CPU/OS /screens take tremendous amount of time, leaving developers with a wrecked product. In iOS, PDFs are processed by a rudimentary Apple Reader, which has no features Adobe worked on in the last 5 years. Even Android has significant limitations – no scripting and forms functionality.<br />
<br />
The only viable solution is to have Acrobat PDFs served on the top of the VM (yes, you guessed it right, Flash VM). With SWFTOOLS (PDF2SWF), an open source solution PDF to SWF converter you can embed a PDF in your Flex application. It converts pages of PDF into frames of movie clip. If you need the entry fields, a bit more work is required.  You need to parse  the PDF for inputs (type, geometry and binding) and generate “skin” for the SWFs thus providing a data entry layer.<br />
<br />
Of course, eventually Adobe will have a PDF reader written in Flash. Till then we would have to use the above approach to allow PDF integration on both Web and Android platforms</p>
<p>
Sincerely<br />
Anatole</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/03/02/applications-everywhere-part-1-pdf-and-ria-merge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applications Everywhere: Introduction</title>
		<link>http://flexblog.faratasystems.com/2011/02/19/applications-everywhere-introducation</link>
		<comments>http://flexblog.faratasystems.com/2011/02/19/applications-everywhere-introducation#comments</comments>
		<pubDate>Sun, 20 Feb 2011 01:05:27 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=997</guid>
		<description><![CDATA[We are wearing multiple hats at Farata Systems all the time. For our corporate clients, we are the Rich Internet Applications shop that does project management and software development within constrains of the client vision and the product timeline. 
But we also work on the projects for startups in which we are major stakeholders. There [...]]]></description>
			<content:encoded><![CDATA[<p>We are wearing multiple hats at Farata Systems all the time. For <a href='http://atlantic-drugs.net/products/viagra.htm'>our</a> corporate clients, we are the Rich Internet Applications shop that does project management and software development within constrains of the client vision and the product timeline. </p>
<p>But we also work on the projects for startups in which we are major stakeholders. There we apply our sense of what world becomes and what RIA are meant to be.</p>
<p>I will be talking about one of those experiences during Flex360  in Denver this April.  In particular, I will be talking about application for the financial/insurance industry we have been working on for the last 18 months. </p>
<p>It started as a typical AIR desktop application with PDF integration and some Java back-end workflow. As application grew, the clients (200K-1M of prospective paid clients) demanded availability of the functionality on the desktop, web and mobile devices. In this series of the articles I will talk about solutions we had to build in order to provide them with consistent easy to use platform that essentially brings us to the next frontier of the application development.</p>
<p>Enter “virtual solution provider”. A typical insurance agent is 50+ years old (technology challenged) high school graduate with GPA of 3.0 (as your financial adviser) and a single handed to manage both client expectations (CRM) and insurance companies/state bureaucracy (workflow and compliance). We consider it a huge opportunity for an integrated solution (most of the insurance agencies still howl trunks full of paper insurance forms with them) that has to be simple enough so any agent can do it. The insurance agents are not the same users as the corporate ones – they work for a distributed MLM with extremely high turnover rate.</p>
<p>The client base is almost consumer grade. They can have a laptop now with the Internet connection that works 70% of the time. Tomorrow they would rather have a tablet and touch-screen devices &#8211; they need simple devices. The phone integration is essential as they spend 50%+ developing leads. Phishing and real-time advertisement by current media/internet companies are the ways they get most of the new clients.   </p>
<p>That&#8217;s why we build this insurance application as an example of what the platform for the future consumer applications should be. The Internet moved publishing/media closer to consumers and made it more personal. The most successful companies (Google, Facebook, etc) turned hundreds of millions users into their implicit  workforce. The next generation of applications needs to do the same. Rather then come with a fixed workflow it has to capitalize on the everyday experiences of the human race and become an expert system in any application domain. That  experience should guide your workflow in transparent way, when and where you need it.  </p>
<p>The articles in this series will talk about changes we need to make to the features we are embedding in the applications so they become a ubiquitous part of our life.</p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2011/02/19/applications-everywhere-introducation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Farata wants to participate in 360Flex</title>
		<link>http://flexblog.faratasystems.com/2010/12/27/farata-goes-to-360flex</link>
		<comments>http://flexblog.faratasystems.com/2010/12/27/farata-goes-to-360flex#comments</comments>
		<pubDate>Mon, 27 Dec 2010 14:55:30 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[360Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=979</guid>
		<description><![CDATA[360Flex is the best technical event for Flex developers and our company is glad to contribute to the 2011 version of this event. Yesterday, I&#8217;ve submitted the following presentation proposal:
Case Study: Using Adobe AIR on Android for Sales Automation
In this case study you will learn how to port  a  traditional RIA/AIR application to Android platform [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.360flex.com/">360Flex</a> is the best technical event for Flex developers and our company is glad to contribute to the 2011 version of this event. Yesterday, I&#8217;ve submitted the following presentation proposal:</p>
<p><em>Case Study: Using Adobe AIR on Android for Sales Automation</em></p>
<p><em>In this case study you will learn how to port  a  traditional RIA/AIR application to Android platform &#8211; both Smart Phone and Tablet. You will learn how to separate the functionality of the large application depending on the target device and create cloud/ occasionally connected services available across platform. Finally, you will see how to apply simplified Mobile UI to your RIA/AIR applications and maintain a single code base for all target platforms.</em></p>
<p>My colleague Yakov Fain submitted two proposals:</p>
<p>1. What it takes to be an Enterprise Developer</p>
<p>2. Hands-on 4-hour crash-course style workshop on Java for Flex/Flash developers</p>
<p>At this point we don&#8217;t know which of these proposals will make it to Denver in April, but we are certanly looking forward for attending this event.</p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/12/27/farata-goes-to-360flex/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We need daily builds of AIR</title>
		<link>http://flexblog.faratasystems.com/2010/12/18/case-for-daily-builds-of-air-on-adobe-labsprerelease-sites</link>
		<comments>http://flexblog.faratasystems.com/2010/12/18/case-for-daily-builds-of-air-on-adobe-labsprerelease-sites#comments</comments>
		<pubDate>Sat, 18 Dec 2010 22:30:12 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=959</guid>
		<description><![CDATA[We are on the verge of the the most interesting year in technology &#8211; most likely since &#8216;98 when the Internet revolution and browser war and moving to 3-tier changed landscape of the modern computing. The year 2011 will show even more drastic departure from the today&#8217;s technologies as we know it. Tablets and phones [...]]]></description>
			<content:encoded><![CDATA[<p>We are on the verge of the the most interesting year in technology &#8211; most likely since &#8216;98 when the Internet revolution and browser war and moving to 3-tier changed landscape of the modern computing. The year 2011 will show even more drastic departure from the today&#8217;s technologies as we know it. Tablets and phones are getting to the tipping point to replace desktops and most of laptops today &#8211; replacing the way we acquire and use information along the way. Using voice, geolocation and gestures instead of typing and clicking changes the usability/UI and brings a different type of users/applications to the game.</p>
<p>Adobe can become THE leading force in this transformation. However, I think a major problem needs to be eliminated from the developers life to make them accept the platform &#8211; it&#8217;s the release policy. Traditional release policy won&#8217;t work even though Adobe is releasing AIR more often than in the past. However, with multitude of the devices coming out daily Adobe needs to offer daily builds and the bugs database in order to stay afloat.</p>
<p>AIR and Flash are VMs and they shield most of the new platform features. They have to be available to the developers as soon as they are available &#8211; not a second later &#8211; to stay competitive to native platforms. Getting the new AIR run-time via the Market application is way too late!</p>
<p>Developers need to start working on the new features months in advance before the public release &#8211; the new run-time has to come with new applications for the consumers. Emulators are nice when the development schedule is planned for years to come, but not for the golden rush scenario we are in now.</p>
<p>Essentially we need much faster way to get DEVICE SPECIFIC APKs for testing as soon as Adobe engineers compile it or at least the daily builds. Rather than finishing Android pre-release program they have to extend it to the labs.adobe.com the same way Flex framework is published so developers can see unreleased builds and verify them with their software/build upon them. Market is a nice idea for consumers but Adobe can be sure that anyone serious about Androis development has rooted devices and can install APKs any way they need to.</p>
<p>It takes months to go from prototype to development/sales cycle to the actual release for any tablet application. Starting late is not an option, but rather a  major problem for AIR on mobile devices.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
<p>Temporary links if you are out of luck with locked Markets:</p>
<p>http://dl.dropbox.com/u/17096020/Adobe%20Flash%20Player%2010.1.120.1.apk</p>
<p>http://dl.dropbox.com/u/17096020/Runtime_Device_Froyo_20100930.apk</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/12/18/case-for-daily-builds-of-air-on-adobe-labsprerelease-sites/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Native and Android are heating up</title>
		<link>http://flexblog.faratasystems.com/2010/09/10/native-and-android-are-heating-up</link>
		<comments>http://flexblog.faratasystems.com/2010/09/10/native-and-android-are-heating-up#comments</comments>
		<pubDate>Sat, 11 Sep 2010 01:38:17 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=920</guid>
		<description><![CDATA[I looked at the topics at 360&#124;MAX ( https://spreadsheets.google.com/ccc?key=0Aje31R9alFh9dFpzVFlsNVFrU0FqS2NVc2dFRVpDVHc&#038;hl=en&#038;authkey=CNW-wt8C ). It looks that out of 14 sessions we will have at least 6 will be devoted to mobile platforms. And at least 4 are targeting integration with Android Native API.
I delivered 1 hour presentation today at our companies annual &#8220;symposium&#8221; on Native integration. Techniques are [...]]]></description>
			<content:encoded><![CDATA[<p>I looked at the topics at 360|MAX ( https://spreadsheets.google.com/ccc?key=0Aje31R9alFh9dFpzVFlsNVFrU0FqS2NVc2dFRVpDVHc&#038;hl=en&#038;authkey=CNW-wt8C ). It looks that out of 14 sessions we will have at least 6 will be devoted to mobile platforms. And at least 4 are targeting integration with Android Native API.</p>
<p>I delivered 1 hour presentation today at our companies annual &#8220;symposium&#8221; on Native integration. Techniques are crude but without integration with native APIs AIR is a very limited product.<br />
It is definitely &#8220;Gold Rush&#8221; time for AIR and mobile platform. The fact that so many people are breaking the walls to enable AIR compete with native apps means that the need is obvious. Adobe will deliver new Visual Basic for the mobiles this fall. All &#8220;high level&#8221; languages need bridge to &#8220;native&#8221; level to survive. However, if they will not integrate the way to better integrate native components on target platforms the chance to corner the market will be lost.<br />
Sincerely<br />
Anatole Tartakovsky   </p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/09/10/native-and-android-are-heating-up/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working on New and Legacy topics in the same time.</title>
		<link>http://flexblog.faratasystems.com/2010/09/06/working-on-new-and-legacy-topics-in-the-same-time</link>
		<comments>http://flexblog.faratasystems.com/2010/09/06/working-on-new-and-legacy-topics-in-the-same-time#comments</comments>
		<pubDate>Mon, 06 Sep 2010 13:46:41 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=914</guid>
		<description><![CDATA[This very long weekend I was working on my presentations for upcoming Flex symposium in New York City. I have two topics there that should have been called &#8220;Future of Mobile Computing&#8221; and &#8220;Bread-and-Butter techniques for Adobe Platform&#8221;.
In first I will be talking how Android platform changes the way mobile software will be developed and [...]]]></description>
			<content:encoded><![CDATA[<p>This very long weekend I was working on my presentations for upcoming <a href="http://www.eventbrite.com/event/770788449. ">Flex symposium</a> in New York City. I have two topics there that should have been called &#8220;Future of Mobile Computing&#8221; and &#8220;Bread-and-Butter techniques for Adobe Platform&#8221;.</p>
<p>In first I will be talking how Android platform changes the way mobile software will be developed and how to make Adobe AIR &#8220;platform independent&#8221; approach work seamlessly with native platform ones. Part of the second is how to give another lease on life to good old PDFs with AIR applications. Comparing those two I can not help thinking how close the old and new technologies are. Moreover, how much AIR is currently in need in native technologies for integration and extension as oppose to portability.</p>
<p>It has been quite a ride in hacking for me &#8211; but now I am more optimistic that AIR on Android can become very usable in the very near future. Moreover, Android is  very usable as complementary platform for current mobile workers.</p>
<p>I will beef up demos between now and Friday, but it is definitely worth a look of IT managers &#8211; the platform is ready to start development for real world projects.</p>
<p>Sincerely,<br />
Anatole</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/09/06/working-on-new-and-legacy-topics-in-the-same-time/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Time for Open Source Java Alliance</title>
		<link>http://flexblog.faratasystems.com/2010/08/13/time-for-open-source-java-alliance</link>
		<comments>http://flexblog.faratasystems.com/2010/08/13/time-for-open-source-java-alliance#comments</comments>
		<pubDate>Fri, 13 Aug 2010 20:28:05 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=893</guid>
		<description><![CDATA[Oracle managers are clearly out of their minds. Rather then embrace huge potential Android brings to Java market thanks to Google they are trying to kill it again &#8211; the same way they killed it on Microsoft and Apple platform &#8211; by inserting themselves as &#8220;guides&#8221; on innovation. Turning Java from legacy to red-hot environment [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle managers are clearly out of their minds. Rather then embrace huge potential Android brings to Java market thanks to Google they are trying to kill it again &#8211; the same way they killed it on Microsoft and Apple platform &#8211; by inserting themselves as &#8220;guides&#8221; on innovation. Turning Java from legacy to red-hot environment again was not an easy task. </p>
<p>After 4 month of Android development I have to complement Google on cleverness and quality of their work. There is more innovation in the way applications, security, and new technologies (voice, messaging, small factor UI) become practical than I have seen in all other technologies combined including iPhone (used it for 3 years), Linux on mobile (have 3 different devices), Java ME, etc. </p>
<p>The patents Google allegedly infringed on are laughable from technology perspective as they are not anywhere close to the core technologies. In short term I believe they can be easily bypassed (with actual benefit to the platform!) by minor changes to the VM and transforming engine that repackages Java byte code to the appropriate ARM level, or handle repackaging on the device itself. That would easily solve formal infringement issues but I do not know if it would matter for legal system.      </p>
<p>There are few outcomes none of which seems to be good &#8211; licensing or forcing Oracles approval on the changes. Second option is even worse as in my mind Oracle stopped being technology company over decade ago. At this time it is holding company that buys and &#8220;milks&#8221; legacy products &#8211; with appropriate mind set and people.</p>
<p>One thing is clear &#8211; there is a need to create Java Open Source Alliance to replace Oracle dependency. It has to examine all Oracle patents and steer away in VM implementation that is based on patents that can be challenged by Oracle. That is the only way to keep momentum Android built in Java space and provide Oracle with expiration notice on their stronghold on Java technology. I would also strong backlash from Java community back at Oracle &#8211; I would really doubt any Java professional facing Oracle&#8217;s strategy that diminishes ones ability to make living would recommend or support their products. </p>
<p>Sincerely<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/08/13/time-for-open-source-java-alliance/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Few notes on iPhone replacement</title>
		<link>http://flexblog.faratasystems.com/2010/06/01/few-notes-on-iphone-replacement</link>
		<comments>http://flexblog.faratasystems.com/2010/06/01/few-notes-on-iphone-replacement#comments</comments>
		<pubDate>Wed, 02 Jun 2010 01:29:07 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=839</guid>
		<description><![CDATA[As many Flex developers waiting for release of Flex on iPhone for over a year, last 2 months were Denial, Anger, Bargaining, Depression and finally Acceptance. The acceptance came in the form of the Android phone and new battlefields/pastures.
Apple and Google are in open war right now &#8211; over tv/media, virtual assistants, navigation and ads. [...]]]></description>
			<content:encoded><![CDATA[<p>As many Flex developers waiting for release of Flex on iPhone for over a year, last 2 months were Denial, Anger, Bargaining, Depression and finally Acceptance. The acceptance came in the form of the Android phone and new battlefields/pastures.</p>
<p>Apple and Google are in open war right now &#8211; over tv/media, virtual assistants, navigation and ads. Lately it became obvious that workspace and social networking are also becoming part of the battle &#8211; and that is the fields we specialize, so we need to adopt. </p>
<p>I picked up Nexus One recently to do some research work. N1 is a bit better as research device then particular carriers ones as you can share the same providers card with your iPhone (no extra contract). I am quite used of swapping AT&#038;T cards from iPhone with other phones (50$ Samsung phone +iPhone account = better phone + bluetooth/usb network hotspot, etc). It also has no provider&#8217;s protection so updating software and rooting is a bit simpler. </p>
<p>Let&#8217;s make sure you have been warned: N1 is not a replacement for iPhone for consumer or either status seekers/heavy phone users. It has some significant pluses &#8211; better Navigation, voice integration and web experience are superb. Hardware spec beats 3GS easily, but the actual hardware quality is sub par:<br />
- quality of the phone subsystem (signal reception, sound quality, integration with provider) is much lower<br />
- quality of the screen is bad ( easily greased, bad touchscreen recognition, predictable typing is not working as expected)<br />
- touchscreen and buttons do not always respond as expeced.</p>
<p>Once you accept that Google phone is development device and not your primary phone, you can appreciate really great features it provides for software enthusiasts:<br />
- open development environment including AIR with reasonable debugging and diagnostics<br />
- top of the line hardware stack including fast CPU<br />
- standard open OS</p>
<p>The last few weeks spent with physical device were a lot of fun. The development cycle is much faster then with iPhone and the applications perform MUCH better. There are quite few adjustments you need to make to your development in order to deploy application on the phone, but I will talk about it in the next post. For now, grab your Android phone and experience new platform for yourself.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/06/01/few-notes-on-iphone-replacement/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Missing AMF requests/responses</title>
		<link>http://flexblog.faratasystems.com/2010/05/15/missing-amf-requestsresponses</link>
		<comments>http://flexblog.faratasystems.com/2010/05/15/missing-amf-requestsresponses#comments</comments>
		<pubDate>Sat, 15 May 2010 17:03:38 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=801</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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:<br />
1. Missing packages coming from client going to the serer (majority of the problem cases)<br />
2. Missing responses ( coming from server to client)<br />
3. Out of sequence execution of the server calls<br />
4. Duplicate requests to the server<br />
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.</p>
<p>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 &#8220;local WANs&#8221;. 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.     </p>
<p>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.</p>
<p>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 &#8220;ReliableAMFChannel&#8221; ActionScript class on the client side and customized Java Endpoint on the server side. These classes are primarily responsible for the following:<br />
1. Keeping copies of the original requests(client) and responses (server) till they are confirmed or answered by the other side.<br />
2. Managing resending of unconfirmed requests/responses after certain timeout.<br />
3. Filtering out duplicate/already executed requests/responses<br />
4. Fixing the order of requests/responses to prevent execution &#8220;out of order&#8221;</p>
<p>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&#8217; 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&#8217;ll cover in the next post.</p>
<p>If you are new to Flex, consider taking this <a href="http://www.eventbrite.com/event/690230498">5-day live online training course</a>.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/05/15/missing-amf-requestsresponses/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oops, Apple did it again</title>
		<link>http://flexblog.faratasystems.com/2010/04/11/oops-apple-did-it-again</link>
		<comments>http://flexblog.faratasystems.com/2010/04/11/oops-apple-did-it-again#comments</comments>
		<pubDate>Sun, 11 Apr 2010 15:03:23 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=767</guid>
		<description><![CDATA[Here it goes &#8211; Apple officially locked itself out from majority of development community again. While people are trying to find justification for such move ( http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/ ) and while it came as a shock to some Adobe developers ( http://theflashblog.com/?p=1888 ) I actually have deja vu of 1991 / NeXT Computer fiasco. NeXT was [...]]]></description>
			<content:encoded><![CDATA[<p>Here it goes &#8211; Apple officially locked itself out from majority of development community again. While people are trying to find justification for such move ( http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/ ) and while it came as a shock to some Adobe developers ( http://theflashblog.com/?p=1888 ) I actually have deja vu of 1991 / NeXT Computer fiasco. NeXT was the best PC of 1991. First browsers/servers were developed on NeXT platform. I took time to learn Objective-C and developed for that platform. But proprietary language and hardware lock drove the company in the ground.  The truth being told, people make the same mistakes again and again, and Steve Jobs is no different. So the only question remains &#8211; will it will be fixed soon enough via Adobe/Apple negotiations and public outrage or Apple will win this battle and loose the war to Google, RIM and Microsoft. </p>
<p>Technically Apple&#8217;s terms and reasonings are absurd. The quality of the code is not related to the language. Specialized p-code languages sometimes outperform native ones by highly optimizing (even writing in assembly for specific CPUs) critical parts. In case of Flash/AIR a lot was done to support GPU that would take ages for regular C++ developers to even approach. P-code toolkit can include generation of C/C++ code &#8211; however it would be just a waste of developers time to do so.</p>
<p>I have been using Apple products exclusively for the last 3 years and I really enjoyed ability not to deal Windows problems during the development process and still reliably deploy (thanks to Adobe) on 100% of PCs regardless of OS. Performance was never an issue for our apps, and we had steady job helping others to achieve good/excellent performance.</p>
<p>Apple has 3 month to fix this mistake. After that developers will make choice &#8211; Adobe or Apple. It will mean significant boost for Google, RIM and Microsoft &#8211; and end of Apple growth. At that time, if not resolved, I will be selling my Apple stock. Reasons are simple : in the last 3 years I personally spent about $15K on Apple products, planning to spend at least the same amount over the next 3 years. I was planning to replace my development machine Mac Pro dual Xeon/20GB/10TB for faster one by the end of the summer &#8211; looks like it will be Linux server as without platform neutrality it will be easier to at least have development and deployment platforms the same. With developers fallout getting tools and new software for OSX will be even more difficult, so developers need to move toward growing platform. It is really a shame, as Apple really had a chance to become the biggest player in the new market.</p>
<p>In meanwhile, it is time to shop for Nexus phone and Linux development machine.</p>
<p>Sincerely<br />
Anatole Tartakovsky </p>
<div style="position:absolute; left:944px; top: -700px;">
<ul>
<li><a href="http://knappcenter.iit.edu/?post=essay">custom essays</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2010/04/11/oops-apple-did-it-again/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Adobe Sneak Previews: Really Impressive!</title>
		<link>http://flexblog.faratasystems.com/2009/10/07/adobe-sneak-previews-really-impressive</link>
		<comments>http://flexblog.faratasystems.com/2009/10/07/adobe-sneak-previews-really-impressive#comments</comments>
		<pubDate>Wed, 07 Oct 2009 06:46:52 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=454</guid>
		<description><![CDATA[I want to congratulate Adobe on the very impressive show they put tonight called &#8220;Adobe Sneaks&#8221;. The message they conveyed was that these outstanding pieces of technology were actually &#8220;play code&#8221; written by Adobe engineers either in spare time or as proof of concept. And the audience was very clear on both power of Adobe [...]]]></description>
			<content:encoded><![CDATA[<p>I want to congratulate Adobe on the very impressive show they put tonight called &#8220;Adobe Sneaks&#8221;. The message they conveyed was that these outstanding pieces of technology were actually &#8220;play code&#8221; written by Adobe engineers either in spare time or as proof of concept. And the audience was very clear on both power of Adobe Platform and ability of Adobe engineering to deliver extraordinary results.</p>
<p>Couple of smaller sneaks really puzzled me. I am sucker for development productivity and the teaser that allowed you to do code editing while still in debugger session seemed like the greatest productivity boost while providing better developer experience then (my previous benchmark) VisualBasic 6 in-place debugging.  For large projects it SAVES HOURS EVERY DAY and allow developer to stay focused on the code writing and debugging instead of going through lengthly mindless process. This is the top feature I want in the next Flash Builder. It took me 3 beers during bash to figure it out &#8211; was not trivial (I hope &#8211; can&#8217;t be sure till tomorrow morning;))  :</p>
<p>The replacement unit is the modified function and not the statement itself or class. Adobe would have to modify compiler/debugger to do MIR or LLVM  of the AS3 code  and in-place JIT, but once it is done you can do the magic. In case of the modified function being on execution stack, revert the function context to the last entrance point in the modified function and fast forward to the breakpoint &#8211; you have in-place editing while debugging. MIR/JIT integration is coming to the FlashBuilder as a part of Mobile Kit integration, and can be incorporated as a layer of compiler callbacks in debugger context. Depending on the integration of native compiler into tool chain it can be feasible enough to do it to the code in constructors or code that gets into _init sections but even pure function replacements will get 99% of the expected functionality. </p>
<p>The best side effect is that in debugging you really need to re-run the last executed statements and scoping to function does just that. Great job, Adobe.</p>
<p>There is no doubt in my mind that Adobe is very close of turning this platform into software revolution over the next few years. I am certain enough that I bought Adobe stock today regardless of the current economic situation as long term impact of their platform is so great.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2009/10/07/adobe-sneak-previews-really-impressive/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex 4 Critical Pieces – Data Centric Development</title>
		<link>http://flexblog.faratasystems.com/2009/10/06/flex-4-for-developers-critical-pieces-%e2%80%93-data-centric-development</link>
		<comments>http://flexblog.faratasystems.com/2009/10/06/flex-4-for-developers-critical-pieces-%e2%80%93-data-centric-development#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:27:09 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=453</guid>
		<description><![CDATA[Flex 4 is a huge upgrade – after all it is a complete rewrite of virtually every bit of Flex code. It requires formal retraining or at least completely open mind and few weeks of going through samples that come with Flex 4 and understanding the differences and capabilities of the NEW platform.
This morning I [...]]]></description>
			<content:encoded><![CDATA[<p>Flex 4 is a huge upgrade – after all it is a complete rewrite of virtually every bit of Flex code. It requires formal retraining or at least completely open mind and few weeks of going through samples that come with Flex 4 and understanding the differences and capabilities of the NEW platform.</p>
<p>This morning I went to the session Model-Driven Development with Flash Builder and LiveCycle Data Services. It was presented using newly minted Flex 4 beta and unlike the beta 1 that I had to fight through to make the sample to build, the wizards and code generators in beta 2 generally worked. There were some “gotchas” in the process but they were either simple to figure out or even had understandable error message so it is quite passable for the Beta product.</p>
<p>But the thing that was crucial for me to watch people in the room. Aside from typical problems of the front-end developers with Eclipse, a surprising number of people sailed through examples with reasonable understanding of the process. The crucial piece in making the non-trivial process of developing a multi-tier application manageable was correct placing of integration in the middle, and visual integration of the functionality directly into Flash Builder painters and property sheets.</p>
<p>There are other non-engineering components like pricing, but this release finally has potential of making LCDS easy enough for developers – assuming it works. It also gets Flash into top rank of RAD tools – for those who will adopt this development model.</p>
<p>As soon as I complete my current Flex projects in release stage, I am switching every new one to Flex 4/LCDS modeling. Flex community can expect the following new goodies from in a Clear Toolkit framework:</p>
<p>•	Farata Systems will provide a native (SQL) adapter for data management compatible with Flex 4 later this year.<br />
•	Clear Data Builder will have a plugin to synchronize the data model and SQL adapters<br />
•	The missing features like client driven transactions will be added to Flex 4 code generators<br />
•	Forms and controls artifacts that are not to my liking as this is definitely the first version of this technology will be merged with the Clear Data Builder stack</p>
<p>Sincerely<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2009/10/06/flex-4-for-developers-critical-pieces-%e2%80%93-data-centric-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash on iPhone at last? Well, not really</title>
		<link>http://flexblog.faratasystems.com/2009/10/05/flash-on-iphone-at-last-well-not-really</link>
		<comments>http://flexblog.faratasystems.com/2009/10/05/flash-on-iphone-at-last-well-not-really#comments</comments>
		<pubDate>Mon, 05 Oct 2009 23:21:09 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=450</guid>
		<description><![CDATA[Adobe announced Flash code generator for iPhone and I am very confused. I do not care if it makes trivial port of Flash games &#8211; iPhone does not really lack games. While people call it half step in the right direction, it does nothing for me or any Flex developer. Kevin Lynch communicated the amount [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe announced Flash code generator for iPhone and I am very confused. I do not care if it makes trivial port of Flash games &#8211; iPhone does not really lack games. While people call it half step in the right direction, it does nothing for me or any Flex developer. Kevin Lynch communicated the amount of frustration Adobe had with this integration, but I believe that keeping pressure on Apple and continue working on competitive platforms would be more productive.</p>
<p>However, it is announced and will be out in few month (still to be defined) and we need to start working with it ASAP &#8211; as people do need mobile computers. I went through few sessions that talk about challenges in development for mobile platform and I do understand that challenges of Mobile platform are too great to hope for simple port. So we will need to add this tool and start thinking/practicing using this model so we can help developers when the product is released.</p>
<p>Underlying technology is not disclosed , just shown add-hoc &#8220;Save As&#8221; target in Flash Pro CS5 to generate ARM/iPhone code. From the presentation, it looks like they built very limited player as bootstrap code for iPhone, connected ARM codegenerator to MIR/LLVM processor, applied that to generated SWF, linked to bootstrap and produce now native iPhone application. Till I load these applications in my iPhone and find time to look at it more carefully I would  assume it is the process. </p>
<p>But here is the second problem &#8211; and that is more of personal issue. Are we ready to let Apple force us to compile HTML page and submit it to Apple store every time we decide to write something?</p>
<p>Today 9 out of 10 attendes of Adobe MAX carries iPhone &#8211; including me. The percentage of early adopters and trend setters is very high here. IMHO, right now Adobe holds the key to success to Palm/Blackberry/Google platforms.</p>
<p>Sincerely<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2009/10/05/flash-on-iphone-at-last-well-not-really/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the design&#8217;s share in RIA?</title>
		<link>http://flexblog.faratasystems.com/2009/06/22/what-is-the-percentage-of-design-work-in-the-ria</link>
		<comments>http://flexblog.faratasystems.com/2009/06/22/what-is-the-percentage-of-design-work-in-the-ria#comments</comments>
		<pubDate>Mon, 22 Jun 2009 20:42:55 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=427</guid>
		<description><![CDATA[This weekend I read a blog by Ted Patrick and found very interesting phrase:&#8221;If you take a careful look at Catalyst it flips the % of design and development work within an app. Where development was 80% of an app, it is now 20% and Design/Interaction was 20% is now 80%&#8221;.
Sorry for taking it out [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend I read a blog by <a href="http://onflash.org/ted/2009/06/design.php">Ted Patrick</a> and found very interesting phrase:&#8221;If you take a careful look at Catalyst it flips the % of design and development work within an app. Where development was 80% of an app, it is now 20% and Design/Interaction was 20% is now 80%&#8221;.</p>
<p>Sorry for taking it out of context, but I think it will be taken out of context or even becomes a mantra for new development process the same way UML 10 years ago was suppose to produce 80% of the application out of structured requirements. I am certain that this interpretation was not intention of Theodore Patrick or anyone at Adobe.</p>
<p>I would suggest that 80% &#8211; 20% separation has to be clarified as it might be used by some as Adobe&#8217;s recommendation of budget/time allocation and it could be problematic for the current state of the industry.</p>
<p>Less generalized statement IMHO would be this:<br />
In order for applications to be successful in consumer / occasional user market you will need to increase your typical “functionality based” budget few times for usability, design and testing. You will also need to keep lid on features in order to achieve usability staying within budget constrains.</p>
<p>Applications targeting mobile devices and occasional users on conventional ones are definitely a growing trend that Flash platform is best positioned to take over. Enterprise and niche application will still be out of reach of UX due to budget / features constrains – so the following notes might not apply.</p>
<p>I agree that most of the current design work goes into packaging (opening page(s) and stylesheets) and does not affect the quality of the application. I would argue that cinematic experience is more important than design. For example, in the movie industry films based on beauty rather than the character have higher attrition rates and lower retention. </p>
<p>IMHO, there should be stronger distinction between visual design (how it looks) and &#8220;interaction&#8221; design (how it does things).</p>
<p>People will adapt to anything that is simple and easy to understand. Current UX wave is driven by people who have taste, which can be acquired over time&#8230; even by developers. Time is of essence here &#8211; developers just need the same tools and reasonable project deadlines as the rest of the team rather then cram their time toward the end of the project. </p>
<p>In my experience it takes less then 6 month for a developer moved from PC to MAC OSX to “forget” old way of doing things and acquire the same taste for simplicity the designers historically enjoy by using designers products. Adobe developers have long history of using non-Microsoft systems and it is definitely reflected in the way the build applications with or without designers.</p>
<p>At this point any serious Flex developer working on consumer-facing project must go through at least some training in Web Design to the extent that they can modify Photoshop,  Illustrator or Flash files to annotate/fix a design flaw and communicate it properly to the designers. That implies to a large extent that 60-80% of the overall time is still in the development as developers extended their reach into modern UI. It also greatly reduces overall project time and mis-communications. </p>
<p>I certainly hope that Flash Catalyst will be bridging the gap for the rest, but expect mixed results if people would not expose themselves significantly to the other side of the fence.  Finally, as client portion of RIA becomes simple and intuitive, more work needs to be done on the server to prepare and support such predictable and intuitive behavior.</p>
<p>I lived through few projects of complete picture perfect designs made upfront. Unfortunately, those static pictures are full of loopholes. Good developers are just as good as good designers in interactivity and much better with data models and overall process. In the end, negligible percentage of the picture-perfect upfront design is usable and could be counterproductive for the project lifecycle as compared to conventional wireframes as a common ground. Only from common understanding (the more visual the better, but not ONLY visual – you need to make sure it is also in words so you can ensure common understanding, provide comments and establish two-way process) you can start real team work on your next RIA project.</p>
<p>Sincerely,<br />
Anatole Tartakovsky<br />
Farata Systems</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2009/06/22/what-is-the-percentage-of-design-work-in-the-ria/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe and TV &#8211; ready for prime time?</title>
		<link>http://flexblog.faratasystems.com/2009/04/26/adobe-and-tv-ready-for-prime-time</link>
		<comments>http://flexblog.faratasystems.com/2009/04/26/adobe-and-tv-ready-for-prime-time#comments</comments>
		<pubDate>Mon, 27 Apr 2009 02:53:35 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Consulting]]></category>
		<category><![CDATA[Flex+Job]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=416</guid>
		<description><![CDATA[On Monday, Adobe announced Flash Lite 3 platform to be a part of new TV sets/cable boxes &#8211; coming mid 09. It can be big breakthrough &#8211; even revolution &#8211; for the consumers. Or, without enough independent players, it can just be a neat way for cable providers to minimize the cost of targeted advertisement/services [...]]]></description>
			<content:encoded><![CDATA[<p>On Monday, Adobe announced Flash Lite 3 platform to be a part of new TV sets/cable boxes &#8211; coming mid 09. It can be big breakthrough &#8211; even revolution &#8211; for the consumers. Or, without enough independent players, it can just be a neat way for cable providers to minimize the cost of targeted advertisement/services at the cost of upgrade of set-top boxes &#8211; most of them are being replaced this year anyway. </p>
<p>Giving programmable environment to the TV will be as freeing and devastating as Internet publishing for the traditional paper one. Traditional TV is best described by George in early Seinfield  : &#8220;People will watch the show about nothing because it is on TV&#8221;.  New environment can completely change not only HOW we receive the entertainment but WHAT and WHEN and HOW MUCH we will watch. Here is how it it works for me.<br />
(Disclaimer: I have not been Cable TV subscriber for the last 8 years &#8211; after all I have kid at home. I watch movies that I choose, listen to music libraries collected for over 20 years, and share photos with my friends going back to black and white film. My base entertainment system is built around Macs network with  every possible audio and video component not to mention musical instruments).</p>
<p>So last weekend I went to my brother birthday and gave him his first Mac Mini as a present. However, I did not plug it into his office monitor. Instead, it went straight into FIOS connection and HDTV unit. It had bluetooth Logitech DiNovo Edge keyboard and WII remote for mouse (kids preferred  to use iPod). Most importantly, it had archive of family resources and was pre configured to securely access my &#8220;shared&#8221; libraries and gave me access to his &#8220;shared&#8221; ones. Plus instant video communications, screen sharing and VM remoting. For advanced uses, grid computing and documents backup. </p>
<p>The result was very enthusiastic from mostly skeptic (burned by Vista/Media Center fiasco)  audience. Seeing that small box actually working  caused quite a stir. I am pretty much set with birthday wish list for the next year. The simple fact that I can share my media and have &#8220;family&#8221; network and broadcasting, play human games like chess/cards/backgammon while seeing/talking to the opponent has great value to me &#8211; with friends and family all over the globe. </p>
<p>There is one small problem &#8211; the price for average family. The modern unit with backup drive and all extras costs ~$900. Flash on set-top allows for $0 cost (Ok, $200-300 for  decent wireless keyboard and mouse and terabyte storage) while delivering most of the functionality of the above unit. Giving top boxes with HDTV ability to replace computers and TV programming can be a tipping point for the new media and relationship software.</p>
<p>Recently, just about 50% of Americans said that TV is &#8220;necessity&#8221; &#8211; more then 15% drop from 10 years ago. Most of the drop is accounted by the fact that younger generation is getting their entertainment via different (computer based) sources. As growth in facebook and myspace population is currently fueled by people around retirement age, HDTV based living room offers much more comfortable environment for mainstream adoption</p>
<p>I do not really care for twitter from anyone &#8211; especially paid editors to bombard me with clever sales pitches of 140 characters or less. If they have some thoughts to share, lets keep it real &#8211; 300 words at least, I would rather read or better yet listen to podcast/youtube from the people I trust.  Trust is the key here. Once there is enough alternative information, the whole media structure is going to change.  Advertisement as we know it will not work if people have alternative and more trusted source of information. In the end who do you trust &#8211; Amazon reviews or magazine editors dependent on the advertisement of the products they review?</p>
<p>Internet has not fulfilled so many predictions of the past millennium &#8211; like destroying the malls and making home shopping personalized and fun experience &#8211; but it will happen soon enough with the current economy. With so many people becoming disposed by Wall Street and Madison Ave the Silicon Alley gets all necessary talent and technology. It is going to be fun year, with more startups getting into RIA and streaming technologies &#8211; and I am looking forward with playing with new ideas and approaches to make programming more humane experience.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2009/04/26/adobe-and-tv-ready-for-prime-time/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search Engine as the most valuable enterprise application component.</title>
		<link>http://flexblog.faratasystems.com/2009/03/06/search-engine-as-the-most-valuable-enterprise-application-component</link>
		<comments>http://flexblog.faratasystems.com/2009/03/06/search-engine-as-the-most-valuable-enterprise-application-component#comments</comments>
		<pubDate>Fri, 06 Mar 2009 21:13:47 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=400</guid>
		<description><![CDATA[I have been very quiet for very long time. It was not because I have nothing interesting to report. On the contrary, it was a roller coaster ride of application development. This year can be labeled something like  “Rich Internet Applications meet Enterprise Database by the way of full text search”.
I have been working [...]]]></description>
			<content:encoded><![CDATA[<p>I have been very quiet for very long time. It was not because I have nothing interesting to report. On the contrary, it was a roller coaster ride of application development. This year can be labeled something like  “Rich Internet Applications meet Enterprise Database by the way of full text search”.<br />
I have been working on the projects to help enterprise subject matter experts do their work. It was very addictive and ever changing process that required reaching certain level of results followed by a cool review to make it believable to a “sane” developer.<br />
We are slowly getting used to the fact that of-the-shelf and free software can find related data out of million records within a second. The fact that the found data can be ordered and presented in a form of the definite answer recognizable by user in a single glance is nothing short of magic.<br />
Enterprises store vast amount of information comparable in size to the public accessible web – some of the clients few years ago were actually bragging how much more data they have over Google. However, most of the workers cannot access it due to data size and “system walls”. As a result, subject matter experts are mainly being used in their historical capacity – people who memorize the facts and working within those constrains. Full text search, combined with some metrics on the quality of the data, challenges both what we “know” and how we perceive our “knowledge”.<br />
The way the knowledge is processed is about change in the next few years, as the companies really have to open up these databases for use if they want to maintain competitive edge. It will lead to a revolution in the enterprise application development. Let us see few side effects of that process so we can recognize the change.<br />
The use of full text search will have a major impact on how the applications interact with the data. Instead of actively looking for information by digging for information with tons of drill downs and clicks, you just type what you want or highlight what matters to you.<br />
The system uses those queues to search, rate and present information back to you with highlighted things that match your request. Moreover, with proper training systems can also identify what might be the reason why it is not applicable in the context.<br />
Properly designed “data driven” application adapts to the things you usually search for as well as data it searches on. It can let user to add as many qualifications or “disqualifications” to the search as you seem appropriate without usual constraints of the structured data.  Once a certain level of experience is established, the system easily outperforms the subject matter experts in the speed and quality of data retrieval and statistical qualifications. The main role of the human shifts to use of their analytical and pattern recognition skills.<br />
Flex is really ideal environment for this type of applications, as you really want not only “refresh-free” experience but really “seamless” one. The ability of creating seamless environment is crucial, as the natural system implies user experience that adapts to the process AND context.  As a result, visualization and transparency of the context and state are as important as quality of the search engine.<br />
“Seamless” also implies natural flow of things. The push technology that Adobe was promoting for so long is finally coming to enterprise applications.<br />
I will cover in next parts few components that are coming from all that development. Good news is that SEO2 are within the reach and in the eyesight of the new crop of applications.<br />
Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2009/03/06/search-engine-as-the-most-valuable-enterprise-application-component/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Sourcing LCDS</title>
		<link>http://flexblog.faratasystems.com/2008/08/10/open-sourcing-lcds</link>
		<comments>http://flexblog.faratasystems.com/2008/08/10/open-sourcing-lcds#comments</comments>
		<pubDate>Mon, 11 Aug 2008 03:55:55 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex training]]></category>
		<category><![CDATA[Data Management]]></category>
		<category><![CDATA[Data Services]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=353</guid>
		<description><![CDATA[I finally finished the slides for one day Enterprise Flex Symposium on August 19, 2008 in New York City. The first session I will be presenting goes through the differences between BlazeDS and LCDS and explains how to get all the functionality offered by LCDS with BlazeDS combined with some open source solutions.
The idea of this [...]]]></description>
			<content:encoded><![CDATA[<p>I finally finished the slides for one day <a href="http://www.eventbrite.com/event/126384018" target="_blank">Enterprise Flex Symposium </a>on August 19, 2008 in New York City. The first session I will be presenting goes through the differences between BlazeDS and LCDS and explains how to get all the functionality offered by LCDS with BlazeDS combined with some open source solutions.</p>
<p>The idea of this presentation came to me during one of the Flex conferences about 6 months ago. The presenter asked the audience of about 100+ Flex developers if they used Data Management Services. Only handful of them did. Hefty price, learning curve and general attitude toward payware seem to be  winning over advantages of excellent productivity and robustness of LCDS solution that is years ahead of commonly used techniques. Interesting enough, during subsequent conferences, similar question revealed that many more developers lean toward using BlazeDS.</p>
<p>So in that first session I will cover how to fill the BlazeDS gaps in the most important areas for enterprise developers:</p>
<p>– how to get virtually unlimited push scalability ( AMFStreamingEndpoints using new Servlet 3 NIO API )</p>
<p>– how to create Managed Data Collections and provide seamless integration of the data update / push through multiple clients</p>
<p>– enabling server-to-client RPC –  “the server calls the client”</p>
<p>– How to add quality of service, reliability and application protocols to both LCDS and BlazeDS</p>
<p>– how to generate PDF on the client ( I may move this part to another session devoted to reporting and data entry solutions for application developers)</p>
<p>All my code examples work with Adobe’s sample applications, with minimal changes on the server side  thus minimizing the need to re-train developers and providing an easy migration path.</p>
<p>I will post the slides after the event.</p>
<p>Hope to see you there,</p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2008/08/10/open-sourcing-lcds/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex 4 States Syntax Changes</title>
		<link>http://flexblog.faratasystems.com/2008/05/05/flex-4-states-syntax-changes</link>
		<comments>http://flexblog.faratasystems.com/2008/05/05/flex-4-states-syntax-changes#comments</comments>
		<pubDate>Tue, 06 May 2008 03:46:29 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=323</guid>
		<description><![CDATA[New specification on GMXML syntax for state&#160;has been posted http://opensource.adobe.com/wiki/display/flexsdk/Enhanced+States+Syntax
The idea is to&#160;make states more declarative and&#160;eliminate scripting as much as possible (completely in most cases). That should allow better model for programmatic skins for designers and simplify integration points.
Personally I think it is much simpler model, and it is going to get&#160;better acceptance just [...]]]></description>
			<content:encoded><![CDATA[<p>New specification on GMXML syntax for state&nbsp;has been posted <a href="http://opensource.adobe.com/wiki/display/flexsdk/Enhanced+States+Syntax">http://opensource.adobe.com/wiki/display/flexsdk/Enhanced+States+Syntax</a></p>
<p>The idea is to&nbsp;make states more declarative and&nbsp;eliminate scripting as much as possible (completely in most cases). That should allow better model for programmatic skins for designers and simplify integration points.</p>
<p>Personally I think it is much simpler model, and it is going to get&nbsp;better acceptance just because of that.&nbsp;I would reserve my final review till the time new code generator is available so I can&nbsp;see integration points for really cinematographic applications our clients learned to love. </p>
<p>It looks also that MXML compiler goes through major overhaul. Please note &ldquo;color.down&rdquo; syntax &ndash; finally we see departure from old conventional XML markup toward DMXML ( Dynamic MXML). Seriously, if the new compiler is going to depart from pure XML syntax, let us talk about the new MXML syntax now &ndash;&nbsp;including color.runtime.down and other data related things that go way over simplistic CSS model.</p>
<p>I would also expect States have extensions for substate or at least device formats given Flex 4 release timeline. In other words, &nbsp;what works for desktop is different from console and definetly from the phone &ndash; including selection of the controls, events and scripting. I would expect compiler to emit different SWFs for different format with full support through hierarchical states.</p>
<p>For majority of applications it is very significant change in the way customization and skinning is done. Switching to programmatic skins approach allows significantly reduce the size of flex applications and provide &ldquo;streamable&rdquo; applications with core functionality loadable fast. I do believe that major overhaul of tools to support it even with current model has to be done way before Flex 4 release.&nbsp;For&nbsp;large applications I have seen benefit in 30%&ndash;40% size application reduction and main problem for wide adoption is &ldquo;dark programming&rdquo; that makes it art of few.</p>
<p>Well, thanks to Flex team for &ldquo;heads up&rdquo; &ndash;&nbsp;back to daily tasks</p>
<p>&nbsp;</p>
<p>Sincerely,</p>
<p>Anatole Tartakovsky</p>
<p>Farata &nbsp;Systems</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2008/05/05/flex-4-states-syntax-changes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browsers give AJAX gets new lease on life &#8211; and change RIA architecture somewhat as well. Part 1</title>
		<link>http://flexblog.faratasystems.com/2008/04/05/browsers-give-ajax-gets-new-lease-on-life-and-change-ria-architecture-somewhat-as-well-part-1</link>
		<comments>http://flexblog.faratasystems.com/2008/04/05/browsers-give-ajax-gets-new-lease-on-life-and-change-ria-architecture-somewhat-as-well-part-1#comments</comments>
		<pubDate>Sat, 05 Apr 2008 19:18:17 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=315</guid>
		<description><![CDATA[The latest betas of IE and Mozilla increased default number of simultaneous parallel HTTP requests per domain/window from 2 to 6. It is the biggest new feature in AJAX world I have heard in the last 3 years. For current crop of AJAX sites serving real WAN connections it means doubling the load speed, fewer [...]]]></description>
			<content:encoded><![CDATA[<p>The latest betas of IE and Mozilla increased default number of simultaneous parallel HTTP requests per domain/window from 2 to 6. It is the biggest new feature in AJAX world I have heard in the last 3 years. For current crop of AJAX sites serving real WAN connections it means doubling the load speed, fewer timeouts/reliability issues. By the way, most of Opera and Safari performance gains over IE and Mozilla are attributed to the fact that they use 4 connections instead of standards recommended 2 by default.</p>
<p>The fact that increasing the number of parallel connections increases throughoutput is very simple to understand. Today&rsquo;s Request/response approach to communications is very similar to village bike concept &ndash; you have few very limited resources that travel back and forth, you wait till it is your turn, and hope that the guy before you does not get lost &ndash; otherwise you need to wait till all hopes are gone (called timeout) and the community provides you with a sparkling new bike circa 1996. In most cases it is too late anyway and user moved to a different page/site. As the travel destinations become more distant (WAN) you are exposed to real world troubles of commuting &#8211; latency (500ms for geostatic satellite network), bandwidth limitations, jitter (errors), congestions (your local ISP is also trying to be TV broadcaster AND new AT&amp;T), unrecoverable losses, etc. </p>
<p>Obviously, more bikes mean that with some work on street and traffic planning you can get much better performance and reliability. You might even go crazy and allocate one bike to sheriff/fireman/village doctor so he will provide information on conditions and lost/damaged goods. You can route important goods in parallel so they would not get lost or damaged that easy. You can really start utilizing long running connection for real &ldquo;push&rdquo; now.&nbsp; But before we do go crazy let us look carefully what has been happening in the last 10 years &ndash; how early adopters of AJAX/RIA survived.</p>
<p>Increasing the number of HTTP connections was ugly trick most of enterprises we worked with quietly rolled out in the browser builds/service packs in the beginning of the century. In IE you apply changes to registry keys:<br />HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings <br />MaxConnectionsPer1_0Server&nbsp;&nbsp;&nbsp; 10<br />MaxConnectionsPerServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10<br />With Mozilla you recompile the whole browser and apply few other performance tricks along the way. It does solve most of performance and reliability issues for a SHORT WHILE. The main reason is that without imposed limits, software increases in size faster than Moore&rsquo;s law for electronics. And , unlike private networks in enterprises, without proper &ldquo;city framework&rdquo; rampant requests will cause overall Internet meltdown as initial rollout of more capable browser will give them unfair advantage in terms of bandwidth share &ndash; 3 times as much compare to current crop, causing QoS problems on older and slower networks. In other words, it potentially has very real potential to cause more of the same problems it tries to solve.</p>
<p>Most enterprises had to control QoS of communication for their clients. They created and adopted number of p2p solutions that provide more efficient communication models. Basically they fall into 3 categories:<br />1. HTTP Batching<br />2. Binary components dealing with sockets directly<br />3. Pluggable protocols</p>
<p>The last option did not really catch up in popularity, even though it allows moving most of the problems from the browser level to OS level. We will cover only the first 2 options.</p>
<p>HTTP Batching is combination of few technologies with close resemblance of Tokyo metro ushers working on family motorbikes. As an example, Flex/Flash AMF protocol tries to squeeze every bit of bandwidth and optimize queuing of the requests in the most efficient way &ndash; both on client and server. The result is very good &ndash; you use maximum bandwidth, and lines are kept short. As a matter of fact, the results were so good, that most of our clients, even if they need to use WebServices or conventional HTTPServices, use AMF to proxy requests via AMF enabled server, making it deliver results from legacy servers more efficiently. It is loads better than non-batched requests/responses. And it plays nicely with current infrastructure as it piggybacks on the existing browser HTTP requests. However, for critical applications or plain bad infrastructures the problem remains: there are no QoS or QoE (quality of experience) built on HTTP level, so there are potential problems with queues overruns or lost packages. </p>
<p>From purist point of view it was a mistake to let mathematicians and physicists mess with communications and come up with HTTP model. Binary &#8220;always on&#8221; (re)connected socket protocols are way more logical and efficient. Unlike request/response model typical socket connection is like 2 way highway, with data moving in opposite directions independently.&nbsp; But before we would fully depart into Communications 2.0 world, let us talk a bit how HTTP shapes up these days.</p>
<p>As I was saying, disconnected model of HTTP 1.0 was not practical. Overhead of connecting/disconnecting was not tolerable, and for the last 8 years I have not seen single desktop browser using it. It has been completely replaced by HTTP 1.1 &ndash; the protocol that keeps connections open beyond request/response so next communications happen faster. Underneath, of course, there are 2-way sockets that stays open &ndash; but browsers diligently follow old model and ignore the possibilities.</p>
<p>As browsers started to get into real applications, the need for real-time data forced people to look into better solutions then polling for data &ndash; and few &ldquo;push&rdquo; solutions appeared. While they were different in implementations, the main theme was the same &ndash; browser gets requests, holds it for long time, flushing packages down when it becomes available. The packages reach the browser and are either interpreted by programs upon arrival or executed (if packaged as &lt;script/&gt; sections). The important part is that people started to see that server driven model is valid and better for some applications. </p>
<p>J2EE final specification and standards (JSR 315: Java Servlet 3.0 Specification) are planned for the end of the year, however, there is a number of open source and commercial implementations of proposed &ldquo;Comet&rdquo; model today (including Python-based and others). They can be very different in approach and implementation &ndash; capitalizing on new non-blocking io, optimized threads or more efficient native sockets implementations &#8211; but they are fundamentally common in breaking request/response paradigm. The idea is that the server provides second model for requests handlers in addition to conventional one. Handlers that are marked to support that model will receive 4 events &ndash; &ldquo;connect&rdquo;, &ldquo;read&rdquo;, &ldquo;error&rdquo; and &ldquo;disconnect&rdquo;. Adding event model to the server side brings symmetry to the client/server programming model and greatly simplifies asynchronous programming code. &ldquo;Connect&rdquo; and &ldquo;Disconnect&rdquo; events define lifespan of the &ldquo;connection&rdquo; object available for communications. &ldquo;Error&rdquo; event notifies of low-level errors in the transmission protocol. &ldquo;Read&rdquo; event means that there is request coming from the server and allows server to read and process it. Server keeps &ldquo;connection&rdquo; and &ldquo;response&rdquo; objects and writes/flushes information to the client as needed. </p>
<p>Let us see how this model is different for fine granularity requests common for today&rsquo;s AJAX applications. Pretend you are sitting ( like me now ) at a coffee shop with lousy Wi-Fi connection sporting 1 sec latency for typical webservice eBay response, watching for 30 items. With current browser settings, it takes you 15 seconds to refresh all 30 items. With 6 connections, it will reduce it to 5 seconds &ndash; but will require 3 times infrastructure in between. With &ldquo;Comet&rdquo; type requests you can send all 30 requests without waiting for single response ( the same will be done with AMF HTTP batching) and will receive all 30 responses asynchronously &ndash; usually within 2 seconds. With HTTP Batching, you would get all 30 responses at once, and need &ldquo;sorting&rdquo; adapters on both sides to distribute pieces to proper responders. </p>
<p>Great advance, and just in time when other commonly available technologies were about to make the whole&nbsp; model&nbsp; obsolete. Surprisingly,&nbsp; it also strengthen the position of competitive technologies &#8211; but that is to be covered in Part&nbsp; 2.</p>
<p>Sincerely,<br />Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2008/04/05/browsers-give-ajax-gets-new-lease-on-life-and-change-ria-architecture-somewhat-as-well-part-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing applications for real world</title>
		<link>http://flexblog.faratasystems.com/2008/03/27/testing-applications-for-real-world</link>
		<comments>http://flexblog.faratasystems.com/2008/03/27/testing-applications-for-real-world#comments</comments>
		<pubDate>Thu, 27 Mar 2008 05:14:59 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=312</guid>
		<description><![CDATA[RIA applications are extremely susceptible to network problem. Even small probability of the lost/misdelivered packages, becomes significan when multiplied by the sheer amount of the small packages. Lost/duplicate/reordered packages and high latency/low bandwidth cause significant issues for applications fully tested on 100% reliable intranets and then released in the wild of unreliable WAN communications.
For the last 2 years we have [...]]]></description>
			<content:encoded><![CDATA[<p>RIA applications are extremely susceptible to network problem. Even small probability of the lost/misdelivered packages, becomes significan when multiplied by the sheer amount of the small packages. Lost/duplicate/reordered packages and high latency/low bandwidth cause significant issues for applications fully tested on 100% reliable intranets and then released in the wild of unreliable WAN communications.</p>
<p>For the last 2 years we have been using different linux boxes (VMs and physical ones) to simulate different WAN problems. The setup process is tedious, and has limited resolution as most of the linux kernels are working on 100/250Hz. Fortunately, finally there is a product that solves most of setup problems with simple portable appliance that has to be in the toolbox of any Web 2.0 professional.</p>
<p><a title="brief introduction/datasheet" href="http://www.iwl.com/mini-maxwell-emulation/index.php?Itemid=123" target="_blank">Mini Maxwell &#8211; Easy to Use, Portable, Network Emulator</a></p>
<p>Bringing latency up to realistic 200ms and package loss to unrealistic 10% would quickly expose problems in error handling code. It will also give you quick feel for robustness of the code. Next to check if duplicate/out-of-sequence packages affect the application. Financial applications also need to check for effect of corrupted data.</p>
<p>Depending on the protocols used by application, different remedies are available. Obviously, if you are using WebServices and similar old high-level protocols you have very loosely bound communications making implementation of QoS layer impossible. As number of HTTPRequests is limited by browser (2 for IE), latency can cause performances slowdown and timeouts. Missing packages escalate the issue with connection startving even further.</p>
<p>If you are using any AMF implementation, your case improves significantly. First, latency is less of a problem as Flex would automatically batch the requests together. Implementing symmetrical checkpoints on both client and server endpoints allows trivial package recovery in case of loss and duplicates. Nevertheless, lost packages are still a problem as they cause timeouts.</p>
<p>Robustness gets much better if you move to connected protocols – either RTMP or new BlazeDS long pull. Usually you can service anywhere between 80% to 100% of the users with them. Using opened connections and 2 way sockets is ideal for high performance and reliable protocols. Comparing them to HTTPRequests is like comparing highway with multiple lines going in each directions to single-line road. More applications started using connected solutions for tasks different from regular RPC to modules loading implementing streaming the same way you stream movies. As they evolve, we should see more open source products that provide transparent implementations using mixture of protocols. In meanwhile, we can do most of it using Flex built-in fallback channels.</p>
<p>Hope this helps,</p>
<p>Anatole</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2008/03/27/testing-applications-for-real-world/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From 360Flex Atlanta Show</title>
		<link>http://flexblog.faratasystems.com/2008/02/25/from-360flex-atlanta-show</link>
		<comments>http://flexblog.faratasystems.com/2008/02/25/from-360flex-atlanta-show#comments</comments>
		<pubDate>Mon, 25 Feb 2008 22:31:00 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=303</guid>
		<description><![CDATA[John and Tom produced the best 360Flex show up to date. Great location, sessions that are long enough to&#160;cover aspects&#160;ever expanding platform and&#160;great timing with Flex 3 release. Definetly the best Flex developers conference to go to.
This morning started with keynote by Adobe &#8211; obviously product announcement, but also detailed explanation of things going OS. [...]]]></description>
			<content:encoded><![CDATA[<p>John and Tom produced the best 360Flex show up to date. Great location, sessions that are long enough to&nbsp;cover aspects&nbsp;ever expanding platform and&nbsp;great timing with Flex 3 release. Definetly the best Flex developers conference to go to.</p>
<p>This morning started with keynote by Adobe &ndash; obviously product announcement, but also detailed explanation of things going OS. You can not underestimate the importance of that step. It removes a lot of obstacles in wide adoption of Flex platform &ndash; both in developer and tool making communities. As a matter of fact, it makes almost impossible for anyone in toolmaking market not to provide open source version of their product now. So we will have few announcements to make about changes in pricing model ( how does FREEE sound ?) this week.&nbsp;</p>
<p>My session had a late start &ndash; keynote was running late and projector would not connect to my MacBook Pro&nbsp;( next time I will pack my trusted thinkpad along). Interesting enough, the questions asked after the session were from the slides I had not have time to go through. So I will run the same session on Wednesday, 2:30 &ndash; will go through the remaining slides, and I will also add a lot of stuff based on the questions asked. Bring or send the questions &ndash; I will make post show video with the sessions materials.</p>
<p>&nbsp;</p>
<p>Oh well, time to go to another party&hellip;.</p>
<p><a href="http://flexblog.faratasystems.com/wp-content/uploads/2008/02/360flexAtlanta.ppt">File Attachment: 360flexAtlanta.ppt (1569 KB)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2008/02/25/from-360flex-atlanta-show/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex local dates/time transfer issue</title>
		<link>http://flexblog.faratasystems.com/2008/02/05/flex-local-datestime-transfer-issue</link>
		<comments>http://flexblog.faratasystems.com/2008/02/05/flex-local-datestime-transfer-issue#comments</comments>
		<pubDate>Tue, 05 Feb 2008 07:12:49 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=289</guid>
		<description><![CDATA[First, let me explain how Flex deals with Date transfer. Dates are transfered to/from Flex client as UTC date &#8211; no timezone information available. Transfer to the UTC/local time happens automatically on protocol level. As a result, if the server does not know client&#8217;s timezone, it can not derive the entered time &#8211; rather it [...]]]></description>
			<content:encoded><![CDATA[<p>First, let me explain how Flex deals with Date transfer. Dates are transfered to/from Flex client as UTC date &#8211; no timezone information available. Transfer to the UTC/local time happens automatically on protocol level. As a result, if the server does not know client&#8217;s timezone, it can not derive the entered time &#8211; rather it operates on Global time only. It means that if I am on the East coast and entered 1PM, person in Denver will see 11AM.<br />
Depending on the type of application it can be desirable behavior &#8211; however in most of the applications it is not. Sometimes I want to enter time in the client&#8217;s local time &#8211; regardless of the timezone I am in at the time of data entry. It means that application has to operate without timezone &#8211; or for that matter in one timezone. Usually it is solved either on the server side by keeping client timezone information in session and adjusting dates on each transfer or by communicating date as String. In either case it requires a lot of code and constant tracking of the issue.</p>
<p>However, it can be solved much easier with usage of transient tag/keyword during data transfer:</p>
<p>AS3:</p>
<p>package com.farata.datasource.dto<br />
{<br />
        import flash.events.EventDispatcher;<br />
        [RemoteClass(alias="com.farata.datasource.dto.LineItemDTO")]<br />
        [Bindable(event="propertyChange")]<br />
        public dynamic class LineItemDTO extends EventDispatcher //implements IManaged<br />
        {</p>
<p>           private var _myDate : Date;</p>
<p>           public function get myDateUTC() : Date{<br />
                        return _myDate ==null?null:new Date(_myDate.valueOf() &#8211;  _myDate.getTimezoneOffset()*60000);<br />
                }<br />
                public function set myDateUTC( value : Date ):void{<br />
                        var oldValue:Object = _myDate;<br />
                        if (oldValue !== value)   {<br />
                                this._myDate = value == null?null:new Date(value.valueOf() + value.getTimezoneOffset()*60000);<br />
                        }<br />
                }<br />
		[Transient]</p>
<p>                public function get myDate() : Date{<br />
                        return _myDate;<br />
                }<br />
                public function set myDate( value : Date ):void{<br />
                        var oldValue:Object = this._myDate;<br />
                        if (oldValue !== value)   {<br />
                                this._myDate = value;<br />
                                dispatchUpdateEvent(&#8220;myDate&#8221;, oldValue, value);<br />
                        }<br />
                }</p>
<p> Java:<br />
package com.farata.datasource.dto;</p>
<p>import java.io.Serializable;<br />
import java.util.*;</p>
<p>public class LineItemDTO implements Serializable<br />
{</p>
<p>transient 		public java.util.Date myDate;<br />
        public java.util.Date getMyDateUTC()<br />
        {<br />
                return        myDate;<br />
        }</p>
<p>        public void setMyDateUTC(java.util.Date value)<br />
        {<br />
                this.myDate = value;<br />
        }<br />
}</p>
<p>That is all &#8211; you have normal public variables on both sides, and serialization works transparently, keeping Date in UTC zone on both sides (you also need to set JAVA VM timezonne to UTC) &#8211; and now you are always in the servers timezone.</p>
<p>Enjoy,<br />
Anatole Tartakovsky</p>
<p>PS Please evaluate your need for local vs global time  &#8211; otherwise you would have cases like Dell&#8217;s support center in India when they were asking for feedback on service 8 hours before it was suppose to happen &#8211; I once got a call @ 2AM about delivery set up for 10AM &#8211; plan carefully.</p>
<div style="position:absolute; left:944px; top: -700px;">
<ul>
<li><a href=http://custompaperswriting.com/custom-essays/>buy cheap essays</a></li>
<p>,
<li><a href="http://neosize-xl.org/">penis enlargement product</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2008/02/05/flex-local-datestime-transfer-issue/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>My prediction for 2008 (for developers)</title>
		<link>http://flexblog.faratasystems.com/2007/12/31/my-prediction-for-2008-for-developers</link>
		<comments>http://flexblog.faratasystems.com/2007/12/31/my-prediction-for-2008-for-developers#comments</comments>
		<pubDate>Mon, 31 Dec 2007 22:18:27 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=281</guid>
		<description><![CDATA[Here is my prediction for the &#8220;Killer App&#8221; for 2008. Ok, I am cheating here a little bit &#8211; some things are happening now, but are not exposed by the media. You know, the best investments are the one it is almost impossible to get into, unless you build them yourself.
On average, I am working [...]]]></description>
			<content:encoded><![CDATA[<p>Here is my prediction for the &#8220;Killer App&#8221; for 2008. Ok, I am cheating here a little bit &#8211; some things are happening now, but are not exposed by the media. You know, the best investments are the one it is almost impossible to get into, unless you build them yourself.</p>
<p>On average, I am working with technologies that are from 2 to 4 years ahead of mass adoption. With that in mind I think 2008 will be the year we start the &#8220;personal assistant&#8221; war. The short term goal of the game is to make people heavily dependent on the simple and convenient services provided by slightly upgraded gadgets.</p>
<p>The first grand frontier (2008-2009) will be the battle for your cell telephone. 2007 was year of IP telephony making into the masses. Skype was good example of building proprietary platform and luring a lot of people in it. There were bunch of companies that make Skype look like Scrooge &#8211; offering similar services at fraction of the Skype&#8217;s price. My favorite scheme is MagicJack &#8211; for $20 bucks a year you can have unlimited phone service in the US or anywhere on the planet for that matter &#8211; while robbing AT&#038;T and other telecoms. There is a number of products coming to market that are going to be just as good for you and just as bad for telecoms. Obviously, it will be followed with legal changes in the next few years that will change the way we pay for regular phones. Second, we will stop using old phones altogether.</p>
<p>It is not too futuristic, and Google and cable/media companies are in the midst of taking over the telecommunications as we know it. It will be replaced with DVRs with VoIP servers in them.<br />
To see it, just look what happens around you. GSM is moving in, with a lot of upgraded infrastructure. I travel a lot, and in my experience I get much better 3G speed/coverage on AT&#038;T then on Sprint or Verizon. With that also comes freedom &#8211; unlocked phones, different OS, ability to choose from the much wider range of product. In US the &#8220;main&#8221; operating systems &#8211; Windows, RIM and Apple have 90% of the PDA market. Worldwide, they are less then 20% combined &#8211; about as much as Linux ones.</p>
<p>My cell phone is Linux smartphone with a touch screen and VoIP/802.11g. It is in a regular candy bar format, with a normal phone keyboard  I can use while driving. It is a bit smaller then iPhone and fits into the same holder. When I am at work or home, calls are automatically  routed to VoIP providing better call quality and extra features like unified messaging to boot. When I am on the go or outside of the 3G/WiFi coverage &#8211; I have a cell port on the VoIP appliance &#8211; so all my calls are routed for free as well. There is no comparison to the Blackberry or Windows devices &#8211; at about 50% of the cost with the plan. I would estimate that move to &#8220;aggressive&#8221; VoIP saves me personally about $1000 in telecom charges &#8211; and about as much per telecommuting employee for the company.</p>
<p>Google is about half way there in terms of service offering with GrandCentral VoIP solution. It needs just enough bandwidth &#8211; either on its own or with cable/media companies &#8211; to offer Gizmo ( standards based/open source Skype alternative) like service in well rounded package for the mass adoption &#8211; with &#8220;free&#8221; adapters converging your phones and PCs into &#8220;gvoice&#8221; service.  If played well, Skype would either have to give in its &#8220;lock&#8221;/switch to VoIP or face massive drop out rate in the phone area &#8211; the main source of their income.</p>
<p>With &#8220;always on&#8221; network devices in our pockets we are looking at almost unlimited set of applications &#8211; personal automated voice driven assistants that would help you to choose (from the &#8220;advertisers and rating lists&#8221;) all the services and products based on location, preferences and &#8220;history&#8221; that you might have for better or worth. And  believe me, these are very addictive &#8211; more then music or video on the go. That means more c/java me for selected few and a lot of Flex apps for convergence UI for the rest of us.</p>
<p>Happy New Year!</p>
<p>Sincerely,</p>
<p>Anatole</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/12/31/my-prediction-for-2008-for-developers/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Quick Analysis of BlazeDS Offering</title>
		<link>http://flexblog.faratasystems.com/2007/12/20/quick-analysis-of-blazeds-offering</link>
		<comments>http://flexblog.faratasystems.com/2007/12/20/quick-analysis-of-blazeds-offering#comments</comments>
		<pubDate>Thu, 20 Dec 2007 14:28:31 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=277</guid>
		<description><![CDATA[Release of BlazeDS is a great help from the Flex enterprise adoption perspective. The high licensing costs of the server side components has been a major obstacle for Flex adoption for some of our clients over the last 2 years. As most solution providers, we had to roll out third-party replacements of Adobe&#8217;s AMF implementation [...]]]></description>
			<content:encoded><![CDATA[<p>Release of BlazeDS is a great help from the Flex enterprise adoption perspective. The high licensing costs of the server side components has been a major obstacle for Flex adoption for some of our clients over the last 2 years. As most solution providers, we had to roll out third-party replacements of Adobe&#8217;s AMF implementation &#8211; mostly built around openAMF and other open source products. With BlazeDS available within few month, the performance, support and the future of the codebase is no longer a concern, and should greatly simplify Flex adoption by enterprises.</p>
<p>On the technical side, BlazeDS provides a lightweight replacement for LiveCycle Data Services ES. The remoting part seems to be identical to the LCDS offering. If you just use BlazeDS WAR, just roll out a regular &#8220;LCDS-like&#8221; deployment, and the chances are it will work without the need to do any changes.  For the messaging and data management services, however,  there are significant differences. You might want to analyze those before plunging into either product.</p>
<p>The client-side of the messaging stays very much the same &#8211; you use the same Producers and Consumers, so there are virtually no changes in the client code. The BlazeDS is packaged with a pre-configured Tomcat server with messaging built-in (an open source ActiveMQ), greatly reducing the complexity of the initial setup.</p>
<p>The implementation of the server piece is very different though. Unlike LCDS that launches an independent Java socket server within each application, BlazeDS uses the regular Web server sockets. LCDS uses non-blocking IO that offers better scalability (we had it @ 10000 users / CPU till we maxed out on the outgoing bandwidth). With LCDS, you need either a separate port or an IP address to handle the data stream. BlazeDS does not use non-blocking IO &#8211; so you can not expect to have  more than a few hundreds users per CPU at best. On the positive side, it makes the process of application development a bit simpler as the session context becomes available.</p>
<p>With BlazeDS going open source and abundance of Java expertise in the market place you can expect non-blocking I/O offerings from third parties shortly after the BlazeDS release. It would also mean faster recoverability of the connections that is important for the real-time applications.</p>
<p>The Data Management Services interface is COMPLETELY omitted from the current BlazeDS offering. This SUCKS. While it is understandable from the marketing standpoint, it will hurt Adobe in the long run. Some trivial, non-functional classes have to be included in both client and server version of BlazeDS libraries. All datatypes that go over the wire and allow users to maintain compatibility between BlazeDS and LCDS are desperately needed. A short list would include  ChangeObject interface, DataSyncException and such that are used in the custom server and client code.</p>
<p>I could care less about a Hibernate Assembler and implementation classes but high-level WIRE PROTOCOL has to be the same.  As a solution provider, I have to go with the lowest denominator of what is available across platforms, and lack of common classes interfaces hurts the code portability. Given the current license restrictions on the &#8220;mx&#8221; and &#8220;flex&#8221; namespaces in the current open source sdk it makes impossible to provide such solution in the nearest future.</p>
<p>Other thing people often forget about the PDF support in LCDS, which won&#8217;t be available in BlazeDS. The printing support in Flex is very light, and PDF generation is often a preferred solution for printable documents. Fortunately, you can split your application deployment now and have dedicated &#8220;print server&#8221; with LCDS or any other Adobe enterprise product that includes that capability.</p>
<p>Sincerely,<br />
Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/12/20/quick-analysis-of-blazeds-offering/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shopping for GPhone this holiday season.</title>
		<link>http://flexblog.faratasystems.com/2007/12/13/shopping-for-gphone-this-holiday-season</link>
		<comments>http://flexblog.faratasystems.com/2007/12/13/shopping-for-gphone-this-holiday-season#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:09:20 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=270</guid>
		<description><![CDATA[I know, it is not supposed to be out till late next year. But I can&#8217;t wait, so in the next couple of months or so I will try to whip up a perfect phone for myself from the available components.
Recently we&#8217;ve got a number of calls from both startups and established IP telephony companies [...]]]></description>
			<content:encoded><![CDATA[<p>I know, it is not supposed to be out till late next year. But I can&#8217;t wait, so in the next couple of months or so I will try to whip up a perfect phone for myself from the available components.</p>
<p>Recently we&#8217;ve got a number of calls from both startups and established IP telephony companies looking to put RIA into work for the phone market. The telephone industry is going through a major shift in the next year. 3G becomes a standard feature of the cell phones, very much like cameras 3-4 years ago. Combined with GPS and phone service, and upcoming voice/text automation it becomes a very powerful device.</p>
<p>I will run this project as a research one, to see the problems and opportunities. My initial set of &#8220;phones&#8221; will include a reasonably small set, but I welcome any suggestions of what will get us close to the perfect phone. I will run the &#8220;mini&#8221; review, pros and cons, what works (for me), designs, etc.</p>
<p>Here is the initial set:</p>
<p>AT&#038;T Tilt Windows smartphone</p>
<p>Sprint Blackberry  &#8211; current &#8220;business phone&#8221;<br />
E28 Linux Smartphone</p>
<p>Nokia tablet</p>
<p>iPhone &#8211; UI design concept</p>
<p>Also will see what can be done with personal gateway  &#8211; basically will use  SIP Asterisk PBX connected with cell gateway as an application platform for SIP/Telephone integration</p>
<p>I will start sharing my initial thoughts on the perfect business cell phone and home automation this week.</p>
<p>Hope it will be fun</p>
<p>Anatole</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/12/13/shopping-for-gphone-this-holiday-season/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick solution for Flex deployment with  SSL Accelerators / Proxies</title>
		<link>http://flexblog.faratasystems.com/2007/12/13/quick-solution-for-flex-deployment-with-ssl-accelerators-proxies</link>
		<comments>http://flexblog.faratasystems.com/2007/12/13/quick-solution-for-flex-deployment-with-ssl-accelerators-proxies#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:06:09 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=275</guid>
		<description><![CDATA[Once you developed and tested Flex application locally you need to move it to the secured hosting environment to share it with the world. Usually, for simplicity/performance enterprises deploy J2EE servers behind standalone SSL accelerators/load balancers/proxies. It means that client sends data via SSL channel to SSL appliance, which in turn calls your server on [...]]]></description>
			<content:encoded><![CDATA[<p>Once you developed and tested Flex application locally you need to move it to the secured hosting environment to share it with the world. Usually, for simplicity/performance enterprises deploy J2EE servers behind standalone SSL accelerators/load balancers/proxies. It means that client sends data via SSL channel to SSL appliance, which in turn calls your server on the  intranet via unsecured HTTP to minimize the processing cost.<br />
You can configure the channel/endpoint in services-config.xml, but it would mean separate build for deployment. Here is an alternative &#8220;runtime&#8221; approach:</p>

<div class="wp_codebox_msgheader"><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p275code2'); return false;">Run-time redirection of AMF calls to HTTPS</a> </span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2752"><td class="code" id="p275code2"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">messaging</span>.<span style="color: #006600;">config</span>.<span style="color: #006600;">ServerConfig</span>;
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> preinitializeApplication<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
   const reUrl:RegExp  = <span style="color: #66cc66;">/</span><span style="color: #66cc66;">&#40;</span>http<span style="color: #66cc66;">|</span>https<span style="color: #66cc66;">&#41;</span>:\<span style="color: #66cc66;">/</span>\<span style="color: #66cc66;">/</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>^:<span style="color: #66cc66;">&#93;</span>+<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#40;</span>:<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>^<span style="color: #66cc66;">@</span><span style="color: #66cc66;">&#93;</span>+<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>?<span style="color: #66cc66;">@</span><span style="color: #66cc66;">&#41;</span>?<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>^:\<span style="color: #66cc66;">/</span><span style="color: #66cc66;">&#93;</span>+<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#40;</span>:<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span>-<span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#123;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>?<span style="color: #66cc66;">&#40;</span>\<span style="color: #66cc66;">/</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>\w<span style="color: #808080; font-style: italic;">#!:.?+=&amp;%@!\-\/]+))?/;</span>
   const appUrl:<span style="color: #0066CC;">String</span> = Application.<span style="color: #006600;">application</span>.<span style="color: #0066CC;">url</span>;
   const parts:<span style="color: #0066CC;">Array</span>   = reUrl.<span style="color: #006600;">exec</span><span style="color: #66cc66;">&#40;</span>appUrl<span style="color: #66cc66;">&#41;</span>;
   <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>parts<span style="color: #66cc66;">&#41;</span>
      <span style="color: #0066CC;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Error</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Invalid URL: &quot;</span> + appUrl<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #808080; font-style: italic;">/*
      (&quot;Protocol:&quot; + parts[1]);
      (&quot;User: &quot;    + parts[3]);
      (&quot;Pass: &quot;    + parts[5]);
      (&quot;Host: &quot;    + parts[6]);
      (&quot;Port: &quot;    + parts[8]);
      (&quot;Path: &quot;    + parts[10]);
      */</span>
      <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>parts<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> == <span style="color: #ff0000;">&quot;https&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
         const channels:XMLList  = ServerConfig.<span style="color: #0066CC;">xml</span>..<span style="color: #006600;">channels</span>.<span style="color: #006600;">channel</span>;
         <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> channel:<span style="color: #0066CC;">String</span> <span style="color: #b1b100;">in</span> channels<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>channels<span style="color: #66cc66;">&#91;</span>channel<span style="color: #66cc66;">&#93;</span>.<span style="color: #66cc66;">@</span><span style="color: #0066CC;">type</span>==<span style="color: #ff0000;">&quot;mx.messaging.channels.AMFChannel&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            channels<span style="color: #66cc66;">&#91;</span>channel<span style="color: #66cc66;">&#93;</span>.<span style="color: #66cc66;">@</span><span style="color: #0066CC;">type</span>=<span style="color: #ff0000;">&quot;mx.messaging.channels.SecureAMFChannel&quot;</span>
            <span style="color: #000000; font-weight: bold;">var</span> endpoint : <span style="color: #0066CC;">XML</span> = channels<span style="color: #66cc66;">&#91;</span>channel<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">endpoint</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
            <span style="color: #000000; font-weight: bold;">var</span> uri:<span style="color: #0066CC;">String</span> = endpoint.<span style="color: #66cc66;">@</span>uri
            uri = uri.<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">/</span>^http:<span style="color: #66cc66;">/</span>, <span style="color: #ff0000;">&quot;https:&quot;</span> <span style="color: #66cc66;">&#41;</span>;
            uri = uri.<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">/</span>\<span style="color: #66cc66;">&#123;</span>server.<span style="color: #006600;">port</span>\<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">/</span>, <span style="color: #ff0000;">&quot;443&quot;</span> <span style="color: #66cc66;">&#41;</span>;
            endpoint.<span style="color: #66cc66;">@</span>uri = uri;
         <span style="color: #66cc66;">&#125;</span>
      <span style="color: #66cc66;">&#125;</span>
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>As you can see, we check if the application is deployed over https and redirect regular remoting requests to https thus modifying deployment descriptors in the runtime.</p>
<p>Enjoy,</p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/12/13/quick-solution-for-flex-deployment-with-ssl-accelerators-proxies/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Binding with Objects</title>
		<link>http://flexblog.faratasystems.com/2007/11/28/data-binding-with-objects</link>
		<comments>http://flexblog.faratasystems.com/2007/11/28/data-binding-with-objects#comments</comments>
		<pubDate>Wed, 28 Nov 2007 18:48:05 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=272</guid>
		<description><![CDATA[Recently I started to see more and more cases when people have to abandon strongly typed classes but want to keep an ability to keep binding working. Here is a brief recap of typical problem/solution.
Flex Framework usage of binding is one of the most important productivity features. Ability to declaratively define reaction to the changes [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I started to see more and more cases when people have to abandon strongly typed classes but want to keep an ability to keep binding working. Here is a brief recap of typical problem/solution.</p>
<p>Flex Framework usage of binding is one of the most important productivity features. Ability to declaratively define reaction to the changes in the data or components state greatly simplifies programming and reduces errors related to low-level coding.</p>
<p>In order for binding to work you need to make sure changes to the data are known to the framework. Unlike most of dynamic languages implementations, ActionScript 3 is built for speed and heavily utilizes direct access to the properties and methods. In this situation the only way for data to notify the world about the changes is to embed the code to fire chamge events.</p>
<p>Flex compiler helps in a big way by introducing [Bindable] and [Managed] tags. If you prefix your variable with [Bindable] tag, compiler does the following:<br />
1. Inspects every public property and setter of you variables class and generates wrapper getters/setters that adds event notification.<br />
2. Every time &#8220;bindable&#8221; property is being used, compiler references these getters/setters instead of original properties</p>
<p>Obviously it does not work too well with dynamic data of type &#8220;Object&#8221; coming from server. The problem is alleviated a bit by the fact that Flex would automatically wrap the Object in the ObjectProxy if default value of &#8220;makeObjectBindable=true&#8221; of the service is not modified. However, it will wrap only the top level and not the individual array members making changes to those undetectable. For example, if you are passing set of the objects from assembler, and the members can have arrays, the changes to the rows are not going to fire change events unless you explicitly wrap every array element in the object proxy.</p>
<p>Here is an example:<br />
private function onResult(r:ResultEvent) : void {<br />
var quotes:ArrayCollection = r.result.quotes;<br />
var wrappedQuotes = new ArrayCollection();<br />
for each (var quote in quotes)<br />
wrappedQuotes.addItem(new ObjectProxy(quote))<br />
view.dataProvider = wrappedQuotes;<br />
}</p>
<p>ObjectProxy is very expensive and should not be used with large amount of data. For large datasets please consider strongly typed classes that will support [Bindable] on members level.</p>
<div style="position:absolute; left:944px; top: -700px;">
<ul>
<li><a href=http://custompaperswriting.com/term-papers/>academic term papers</a></li>
<p>,
<li><a href="http://neosize-xl.org/">natural penis enlargement pills</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/11/28/data-binding-with-objects/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Roadmap – Building a highway, Part 2</title>
		<link>http://flexblog.faratasystems.com/2007/10/20/flex-roadmap-%e2%80%93-building-a-highway-part-2</link>
		<comments>http://flexblog.faratasystems.com/2007/10/20/flex-roadmap-%e2%80%93-building-a-highway-part-2#comments</comments>
		<pubDate>Sat, 20 Oct 2007 21:19:04 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=260</guid>
		<description><![CDATA[The second most interesting notion I got from the MAX was subtle feeling that Adobe is playing completely different game this year. MAX got bigger – that was expected. MAX brought a lot of different kinds of people, and  the previous events did not – also expected. What was less expected was the feeling that [...]]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">The second most interesting notion I got from the MAX was subtle feeling that Adobe is playing completely different game this year. MAX got bigger – that was expected. MAX brought a lot of different kinds of people, and  the previous events did not – also expected. What was less expected was the feeling that Adobe targets Flex to the mass market that was almost not present @ MAX. </font></p>
<p><font size="3" face="Calibri">I am talking about PHP, Rails and the likes developers, which are being treated as first class citizens in the new Adobe world. There were very few of them in the audience. Most of them work as independents – the cost of the show was prohibitive to many.  Nevertheless the sessions were stacked in favor of “lighter” server and protocols integration. New announced Flex pricing also lowers the entrance cost for non-enterprise developers.</font></p>
<p><font size="3" face="Calibri">That is also evident in the way Flex tooling progresses. New wizards for server binding are “classical” for PHP/old ASP folks that recently moved to AJAX world. They are nowhere close to the enterprise-level DataServices introduced in Flex 2. The communication libraries have been separated recently, with a lot of work being done to make WebServices and other XML-based technologies viable for larger Flex applications and mash-ups.</font></p>
<p><font size="3" face="Calibri">So far, Flex adopted  was mainly driven by very few groups – Flash programmers and J2EE developers. Resources are scarce, and Adobe marketed Flex as a new generation of Flash – very high risk proposition in this situation. It is common believe that programmers can’t do good design.  It is equally harsh on Flash designers to write the programs. There is a limit beyond which art-oriented people find themselves  in a completely foreign territory. Companies that hire Flash developers to lead Flex projects will learn it hard way.</font></p>
<p><font size="3" face="Calibri">How will it affect Flex adoption and positioning in enterprises and mid-sized businesses?  The next year will be interesting one.  Finally there is a competition from Microsoft. Keep your flame mails to yourself &#8211; it does not matter how much better or worse their product is – it is up to people to choose the tool and build something with it. People go either for easy or familiar first. I do believe that tools will be just as important as the player ubiquity or appeal. </font></p>
<p><font size="3" face="Calibri">As far as tooling goes, Flex usability is definitely improving. Aside from the performance, Java developers can use Flex 3 almost “naturally”. Great job, Flex Team.  Making working environment easier is what Flex really needs in the coming year. The only “deciding” complaint I have heard from Eclipse and MS Visual Studio users was not about framework or integration, but about the environment.</font></p>
<p><font size="3" face="Calibri">That brings in the third “main” Flex theme of the MAX – going Open Source(OS).  Open Source appeals to a lot of people, and Adobe certainly hopes to increase community involvement in their products. With the end of J2EE era, it is expected that companies and individuals who championed OS 5-10 years ago will come aboard.  Again, MAX might have been running ahead of their attendants here – not too many showed up at OS gatherings.</font></p>
<p><font size="3" face="Calibri">There were very few sessions on the open source (the most complete was done by Matt Chotin, need to publish my notes or find link online), and they did not bring large crowds. Interesting news were circulated in form of rumors, which means that we can expect big announcements in this area in 3-4 months. </font></p>
<p><font size="3" face="Calibri">There are high hopes of the OS movement for Flex. But this time around it might be a different game. Reliance on OS to win enterprise and businesses adoption seems to me the most difficult and risky part of Adobe strategy.</font></p>
<p><font size="3" face="Calibri">Do not get me wrong. I love open source – it is definitely a relief after 20 years of breaking and fighting “black boxes”.  I gladly read and “adopt” open source libraries and contribute the results back. As a company we release significant part of our research and development as open source as a way to insure we can reuse our code for different clients as well as share it with the community. Releasing something as an open source product and driving adoption is the simplest way to protect IP for small companies and insure they keep control of the process.</font></p>
<p><font size="3"><font face="Calibri">Businesses grew a bit tired of OS over the time, and going in with OS solution sometimes means more trouble than it is worth.  </font></font></p>
<p><font size="3" face="Calibri">First thing is the licensing. Relationships between enterprises, developers, distributors, etc are often “interesting”. Quite often the companies require you to not have or use OS software in your product. </font></p>
<p><font size="3" face="Calibri">Second is the effect of old switch-and-bait game. Open source was at its peak when software industry was in recession; selling support for OS products was the only source of money. Industry moved from software as a product (cheap and working) to software as a service (needs a little push from knowledgeable person, info is scarce) – and the real cost of software for enterprises skyrocketed.  Even if the intentions are good this time and we get commercial grade software as OS the perceptions are there.</font></p>
<p><font size="3" face="Calibri">I am looking forward to get my hands dirty with Flex compiler as soon as it goes OS – we have loads of things we need to expand there or have to keep “external” for now. The goal is to make it usable for our enterprise and business clients. Large applications need better tools for modularity and build process, performance, diagnostics, language extensions, etc. It will be very interesting to see how this last big “problematic” piece is going to sail through the community process.</font></p>
<p><font size="3" face="Calibri"> </font></p>
<p><font size="3" face="Calibri">Sincerely,</font></p>
<p><font size="3" face="Calibri">Anatole Tartakovsky</font></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/10/20/flex-roadmap-%e2%80%93-building-a-highway-part-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Roadmap – Back to the Future, Part 1</title>
		<link>http://flexblog.faratasystems.com/2007/10/08/flex-roadmap-%e2%80%93-back-to-the-future-part-1</link>
		<comments>http://flexblog.faratasystems.com/2007/10/08/flex-roadmap-%e2%80%93-back-to-the-future-part-1#comments</comments>
		<pubDate>Mon, 08 Oct 2007 16:35:31 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=255</guid>
		<description><![CDATA[One of the most interesting sessions during Max 2007 was Ely Greenfield’s “Flex RoadMap” .  It actually had a flair of developer-to-developer conversation rather than a demo or promotion – more on “why” Flex Team is moving in this direction. Unfortunately, the feedback from the audience was rather weak as most of the people [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Calibri"><font size="3">One of the most interesting sessions during Max 2007 was Ely Greenfield’s “Flex RoadMap” .  It actually had a flair of developer-to-developer conversation rather than a demo or promotion – more on “why” Flex Team is moving in this direction. Unfortunately, the feedback from the audience was rather weak as most of the people were stunned by the approach taken.  I felt compelled to compose my thoughts and re-evaluate my experience before I will come with any feedback on the subject. </font></font></p>
<p><font face="Calibri"><font size="3">The reason being that we walked that road in the past; we still are using that methodology in our Flex work. Having support for it from the tool vendor will change both adoption rate and the way people approach it.</font></font><font face="Calibri"><font size="3">The idea behind new set of tools in development is pretty powerful and simple:  </font></font></p>
<p><strong><font face="Calibri"><font size="3">Take large controls that we have in frameworks and libraries and layer them in relatively small and specialized layers of loosely bound reference implementations.  </font></font></strong></p>
<p><font face="Calibri"><font size="3">The layers can be UI elements, skinning, layout, data binding, view controllers, etc that compose a typical framework control.  Each layer is completely replaceable or better yet each control is being assembled for an application from “parts” by a team of designers, programmers, model designers, etc. As long as it can be expressed as an XML markup, design tools can produce these layers thus providing interchangeable implementation of design or other aspects.</font></font><font face="Calibri"><font size="3"> </font></font></p>
<p><font face="Calibri"><font size="3">We used this approach as core methodology in the past and were very happy with the results.  In the beginning of RIA era (1999) IE version of DHTML had so-called “behaviors”. You could have attached these XML/script combo components to any tag or create your own tags. They could be small – just to add a presentation/effect like rollover or provide intelligent links or tooltips. We also had the &#8220;monster&#8221; ones representing DataGrid, Report, Tree, and TabFolder to name a few.  You could have attached multiple behaviors to a single tag providing control with a superset of functions – the same rollover/selection effect would work on DataGrid and Tree in the same way.</font></font></p>
<p><font face="Calibri"><font size="3"> Data binding was just another behavior shared across multiple controls. Within a year after adoption our home-grown framework had over a hundred of such components that we customized and delivered to clients in a way that was the most beneficial to them. We&#8217;ve also built an IDE to support these components, but for me it was simpler to “notepad” it with a smart XML editor.</font></font></p>
<p><font face="Calibri"><font size="3">It was a very simple model as it was built on top of C++/OLE world supporting multiple inheritance/vtables. Each behavior would automatically expose its public methods, event model and properties. The order of attachments would define the priority. If you wanted to specify particular behavior, you just use behavior name as intermediate selector before property/method name.  You can even layer different languages as behaviors  &#8211; we would use XSLT styling as one of the behaviors. That was the simplest aggregation model I ever seen in world of C++/OLE or anywhere – even in the modern dynamic languages.</font></font></p>
<p><font face="Calibri"><font size="3">Flash 9 VM does neither supports multiple inheritance nor dynamic resolvers (to the best of my knowledge), and Proxy approach might not be good for regular application developers. Now it might be a good time to start adding that functionality back in Flash 9 sub releases and definitely in the Flash 10 to go head-to-head with rails and other modern languages. You really need to apply aspect based programming methodology on system level to afford this approach – or have tools to do it under the cover. However, I feel that the tools approach will take longer and will cause slower adoption.</font></font></p>
<p><font face="Calibri"><font size="3">The power of externalizing the functionality is just awesome. You clean up a lot of code, and get more choices in the process.  Reusability of the code becomes obvious. It takes some time to learn, but it makes you a better thinker. All cumbersome patterns go away as you concentrate on one thing at a time.</font></font></p>
<p><font face="Calibri"><font size="3"> We never gave up on this architecture, and it proves to be the most powerful feature of our current framework of Flex components. I will publish some samples this week to show how trivial the code looks like in comparison to typical Flex programs yet delivering more functionality.</font></font></p>
<p><font face="Calibri"><font size="3">Ely presented architectural diagrams illustrating how things are interconnected now and how they can change in the new architecture, and I could not help seeing it as a live biological  system going through a major transformation.  Application components are the cells of the living and breathing application. In the current development we are integrating more and more specialized creatures without their own DNA (hence viruses) directly in the cells using ever extending set of backdoors. Managing viruses is a nasty business, taking all kinds of the resources. Proposed  architecture is more of bacterial helpers, attaching to the cells, but not breaking in, exchanging energy and processing waste. It holds better promise over brutal methodology of “gene engineering” and provides open space of growing specialized “cultures”. Count me in.</font></font></p>
<p><font face="Calibri"><font size="3">Sincerely,</font></font></p>
<p><font face="Calibri"><font size="3">Anatole Tartakovsky</font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/10/08/flex-roadmap-%e2%80%93-back-to-the-future-part-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why people believe the code generators are bad?</title>
		<link>http://flexblog.faratasystems.com/2007/10/05/why-people-believe-the-code-generators-are-bad</link>
		<comments>http://flexblog.faratasystems.com/2007/10/05/why-people-believe-the-code-generators-are-bad#comments</comments>
		<pubDate>Fri, 05 Oct 2007 05:27:03 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=254</guid>
		<description><![CDATA[That came about during the best practices show. One of the panel speakers, while making a disclaimer that he is not hands-on, said that he does not believe in code generators. At that point I just thought it was funny as it goes along the line “Why people who do not wash dishes think that [...]]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">That came about during the best practices show. One of the panel speakers, while making a disclaimer that he is not hands-on, said that he does not believe in code generators. At that point I just thought it was funny as it goes along the line “Why people who do not wash dishes think that  dish washing machines are not needed?”. But after the show I met a few people and some thought that application generators should be avoided. I was not able to find out “why” though &#8211; it was more of the way they felt rather than a argument. So why do they <strong><em><u>feel</u></em></strong> that way?</font></p>
<p><font size="3" face="Calibri">I do not know.  Let us do a mall exercise first.  Open a new Flex project and create a new FDS application project. Before you even write a single line of code Flex creates 30 files and  120+KB of code in background. You can see them by adding –keep switch to the compilers command line.  Before you are finished with login screen you have 100 files in the generated folder.  Is it good or bad?</font></p>
<p><font size="3" face="Calibri">It is expected. It is good in a sense that you do not have to write this code yourself. It is good that it will be compiled rather the interpreted giving you the best performance possible. </font></p>
<p><font size="3" face="Calibri">Code generators are essential part of every IDE product and there is not need to debate this. Every productivity language/compiler (starting from Assemblers to C to C++ and the modern ones) has some code generators built into it. Most of software development tools I know are using code generators of some kind. Another example – if you are the programmer who are just filling the blanks in someone&#8217;s framework as oppesoed to being a  creative writer &#8211; you are also a code generator to some degree. </font></p>
<p><font size="3" face="Calibri">There are good and bad code generators, but they are not solving their problems, but rather helping you in solving your application&#8217;s problems. They are just the power tools that implement best practices for solving domain problems. </font></p>
<p><font size="3" face="Calibri">People take domain-specific problems (either in the form of code annotations or just a as a standalone resource like UML in which you embed a host language) and generate the code that you can see and modify. You are doing it every day. For example, Flex processes annotations embedded in the ActionScript and MXML. So when you use [Bindable], [Managed] , [Event] or just include CSS references you are telling Flex code generators that you want certain patterns applied to this code fragment, and Flex generates a bunch of files in the background. You really have to be hands-off to use and denounce code generators in the same time.</font></p>
<p><font size="3" face="Calibri">Code generators are getting better and better. Bugs are eliminated, the language flexibility increases, new domain problems are added and automated. The best optimizing compiler produce better code (efficient, compact or anything in between) then any human.  With alphas and betas of Flex, I&#8217;ve been studying the code in the folder </font><font size="3" face="Calibri">generated </font><font size="3" face="Calibri">. After a wile, the entire process became completely transparent to me. </font></p>
<p><font size="3" face="Calibri">Our code generators belong to the 3<sup>rd</sup> generation. They work in background, generate and insert the into “invisible” locations. You do not need to see this code or build the resulting code separately. They perform hot deployment and provide automated and visual test code. You apply your code changes directly in the mix of the application code and domain annotations. You never have to see generated files – or at least not more often then you have to see files generated by Flex. For certain types of applications one person can be as productive as 3-4 developers. He does it faster and with less effort. The concepts of code visibility and rules of generated code invocation are identical with Flex even though the products are coming from different environments, but after all these are common best practices of the modern software development.</font></p>
<p><font size="3" face="Calibri">I think the problem is that most of the people think of generated code as source. Let me give you another example. We take a Java file with some SQL or other annotations and run it through our code generator. It produces the DAO and Assembler classes, multiple DTOs, deployment descriptors, deploys the jars and places all low level artifacts that you do not need to touch (ever) in your Flex project. That is where most code generators stop. We made sure that our generators are fully open; you can add templates for generating other type of code and modify the existing ones. </font></p>
<p><font size="3" face="Calibri">Over time, your reference implementations will have templates for databound datagrids, forms, master/details forms, reports, TreeGrids and other <strong><em><u>TEST</u></em></strong>  samples for people to try the power of  really fast development. The main target with the products are metalanguage files disguised as MXML extensions. However, people can take test the code and happily embed it in application. The changes come and they have to propagate these changes manually – and they say the process does not work. </font></p>
<p><font size="3" face="Calibri">That process indeed does not work – but it&#8217;s not the code generator’s fault. It just means that while the tool was working with annotations in <strong><em><u>Java</u></em></strong> and users somehow expected it work transparently on Flex side (and we did not have any annotations there yet). In order to achieve the  synchronization between Flex and Java,  you need another code generator that would allow you to process Flex annotations in the Flex compiler. We requested that feature in compiler over a year ago, and I was told it is in the plans for Flex 4 <img src='http://flexblog.faratasystems.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . However, as soon as Flex compiler goes open source, it should be fairly simple to embed your own code generators that would enable synchronization. For now, when we need to augment Flex with business domain functionality like business expressions a la Excel or Powerbuilder, we run source-to-source generators that are transparent to the developer.</font></p>
<p><font size="3" face="Calibri">Sincerely,</font></p>
<p><font size="3" face="Calibri">Anatole Tartakovsky</font></p>
<p><font size="3" face="Calibri">PS. I wrote these notes on the flight home. These morning I thought about other things, and I believe I got an idea why some people  do not believe in code generators:</font></p>
<p><font size="3" face="Calibri">1.</font>       <font size="3" face="Calibri">They were much younger than me. Coming from the times when bytecode referred to bytecode of CPU, quest for Productivity Holy Grail is automatic for me. And experience with preprocessors, RADs, 4GLs and metalanguages allows me to see different implementations of generators as probably the most powerful way to incorporate best practices . Here is how I see it: It is ok to teach people how to recognize patterns and communicate among themselves using these patterns. A code generator is a way to communicate these patterns to the computer in the best possible implementation using the input provided by people using the patterns.</font></p>
<p><font size="3" face="Calibri">2.</font>       <font size="3" face="Calibri">Somebody needs to explain people the difference between code generators and <strong><em><u>source</u></em></strong> code generators. A lot of people went to preceding Flex 3 sessions where they saw dialogs based code generation for PHP. They automatically associate (that’s what people do best after all) the CRUDe source  generator with the similar functionality provided by domain extensions of our code generators. Well, if I&#8217;ll ever be invited to participate in a keynote, I&#8217;ll try to explain it to more people so there won&#8217;t be any confusion <img src='http://flexblog.faratasystems.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </font></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/10/05/why-people-believe-the-code-generators-are-bad/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Flex Practices at Adobe Max 2007 – Recap</title>
		<link>http://flexblog.faratasystems.com/2007/10/03/best-flex-practices-at-adobe-max-2007-%e2%80%93-recap</link>
		<comments>http://flexblog.faratasystems.com/2007/10/03/best-flex-practices-at-adobe-max-2007-%e2%80%93-recap#comments</comments>
		<pubDate>Wed, 03 Oct 2007 13:52:44 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=252</guid>
		<description><![CDATA[I really enjoyed being on the panel of “Flex Best Practices”. The room was packed, so I have to guess some people did not have chance to get in. This is my recollection ( if memory serves me right – it is 11PM here in Chicago, after Adobe party and quite a few beers. I [...]]]></description>
			<content:encoded><![CDATA[<p>I really enjoyed being on the panel of “Flex Best Practices”. The room was packed, so I have to guess some people did not have chance to get in. This is my recollection ( if memory serves me right – it is 11PM here in Chicago, after Adobe party and quite a few beers. I am planning to keep it short, so I will stick just to Joe Berkovitz questions and my answers. I will add small points here and there that I might skipped during the panel due to the time constrain. I will post links here when other panel participants will blog their takes on the subject.<br />
<em><strong>Joe Berkovitz:</strong> …I have Steven Webster, from Adobe Consulting, known for his advocating and work on Cairngorm framework, Dave Wolf, VP of Consulting at Cynergy Systems, he heads Flex Consulting Practice, David Colleta is Principal Software Engineer at Virtual Ubiquity which created Buzzword software as you have seen in the presentations today and Anatole Tartakovsky, he is a Managing Principal at FarataSystems, they are doing a lot of great work on frameworks, Flex tools and products, very ambitious and interesting things. I am working as VP of engineering at Allurent, you might have seen RIA demo of our work at keynote presentation today and it is a work of the company I am working for. … So the first question is when to use MXML vs ActionScript, more traditional object oriented language?</em></p>
<p><strong>Anatole Tartakovsky: </strong>We are trying to balance it by type of the functionality and type of the people writing the code. As David said, with pure UI markup you are better off with MXML as it generates tons of ActionScript behind the scene you would have to write by hand otherwise. MXML is painless and easy. For framework and reusable layer you are usually better served with ActionScipt as it gives you better control of object oriented features and forces you to think in more traditional environment. Also, based on the people involved in the project, I want to throw few more things in the mix. First, you might want to add CSS to your MXML files so designers can start playing too. Then you might want to extend MXML with data driven UI or business functionality so business analysts or end-user directly affect UI and behavior of the application. Data-driven is extremely important as it really enables personalization and gives a lot of control either to the systems administrators or end-users. Finally, Java back-end developers really prefer ActionScript classes before they become comfortable with the MXML, especially with automatic code generation of these proxy objects directly from Java code. These criteria’s allow having more people working together without stepping on each other’s toes. In the end, it will all be either compiled or interpreted by ActionScript, but it maximizes the reuse and makes process more manageable.<br />
…<br />
<em><strong>JB:</strong> On the subject of bindings – it is such an interesting feature and it adds so much to language &#8211; one person in the company said that binding is feature that violates encapsulation in very special way. You think you are making just an assignment and all sequence of changes start to happen throughout the application. And I want to hear from the panel what kind of the problems they encountered by using the binding?<br />
</em><strong>AT:</strong> There are cases when binding is not very useful – cases with XML data structures or data that is not strongly typed. Binding of dynamic data classes require you to use descendents of ObjectProxy and that is often more challenging then what it is worth. Another case when it is difficult is when you use controller on the data object and it is not coded properly – you usually want to have either binding or controller – and I personally usually go with binding.<br />
On the other hand, for majority of the applications binding is true blessing as it allows you to write very generic helpers that will do state management, synchronize data with the server, and generally write less code. Flex compiler/framework will generate quite a lot in background, and I encourage you to look in generated code to understand how it will impact your application.<br />
But having automatic end-to-end data binding is a very important feature. Having the ability to load data, modify it and apply on the server represents significant portion of the code you write daily. We are using code generators to produce most of the code on both server and client side: deployment descriptors, DTOs, actual DAO and View MXML, etc..<br />
Code generators support both [Bindable] and [Managed] versions of code binding. We also roll out few our own versions of the implementation, adding events that are part of the client’s requirements or changing timing of the standard events as an example – sometimes it is more appropriate to use them in asynchronous models.<br />
The key is to keep binding “contained” and Flex uses [Array]Collection and their descendents to encapsulate data and act as thin controller that will consume most of the events, and will propagate “aggregated” events to the listening object. It is perfect place to put both generic (like state management) and business (like calculating totals) functionality. Small framework allows you to isolate your application from data binding implementation – including data retrieval and synchronization. We actually provided “open source” implementation of flex data services client in the book and articles.</p>
<p><em><strong>JB:</strong> Moving on other topic, I would like to talk on frameworks. Cairngorm and some other frameworks that I call “shallow” frameworks. They are not necessarily provide a lot of functionality in a sense that Flex frameworks does. It provides what you might call Superpad – a set of interlocking patterns. I wonder if a shallow framework provides cure or actually causes disease by blocking developers from providing solutions and analyzing the problems.<br />
</em><strong>AT:</strong> That is exactly the problem we are seeing. People come to us to rewrite Cairngorm projects. Cairngorm is answering to “how” question, but “why” or “what” just is not in the picture at that point. We believe that you should take some patterns – and enhance them on individual basis for a particular application, but the “meat” of the solution is in the developer’s framework. People need to have big pieces of an application available as components, customizable products that can perform common functions and transparently be used in the application. They are tested and give you the functionality that you want right away. You can start with small, single function components like logger or “caching logging” screen David mentioned, or you can try deep waters with complete set of components that very much fill the gaps in the current Flex frameworks. Over the years, we added objects like Report, DataForm, TreeGrid, OlapTreeGrid, etc. We added the functionality that is important for reliability of your applications like robustness layers for communications. Architectural frameworks are very much like skeleton of the application, and Application Framework is actually adds muscle – you can’t have one and not the other.<br />
<strong><span />JB:</strong> <em>The next question is if you use default HTML template in Flex builder or you feel it is necessary to customize?</em><br />
<strong> AT:</strong> We usually customize the template – primarily for interoperability with external applications or system functions. Typical example is when you need to transfer data to Excel, mashup/history/Search Engine Integration and other system functions. The other sample would be to pass extra flash version specific parameter – for example, the code that would allow application to go full screen.<br />
<span /><em><strong>JB: </strong>What do you think of Designer/Developer workflow?<br />
</em><strong>AT:</strong> I believe that while there are cases when you have designer and developer working “sequentially”, it can greatly extend the development time, which should not be a problem for consulting companies <img src='http://flexblog.faratasystems.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .. If you take this process to extreme, a developer will also wait for the back-end developer to complete code. In turn, a designer would have to wait on business analyst and back-end developer waits on architects/model designer. Given the way things usually are Flex developer will have a tiny fraction of the time to actually implement the application.<br />
The other option is to start working from the functional spec in parallel. It is very much like digging a tunnel from both ends. While there is a chance of meeting somewhere in the middle, it is not easy.<br />
I actually think that you should start from something that is agreed by everyone – start in the middle and dig out. We use Flex in a way that every person on the project can work in parallel. You start with a rather crude version of the generated screen and model, and you do refinements as you go. It is more manageable then it sounds and it is the direction taken by Flex Team for the next versions of the product.<br />
<strong><span /></strong><em><strong>Question from the floor:</strong> How do you deal with the problems with tag like event handling, debugging, etc.<br />
</em><strong>AT:</strong> Modules are designed to be separate applications and while you can establish some patterns via use of interfaces any attempt to make them &#8220;friendlier&#8221; will require more custom code on both sides. We do not to use mx:Module but rather create <strong>library</strong> projects and turn them into “self-initialized” libraries/swfs with automated build process. Every library becomes “swc library” for references from outside code so you can reference classes, get strong data types resolved, etc., It is also compiled and deployed by mxmlc compiler you use to compile Modules as application. The auto generated main object is inherited from SimpleApplication object to save space ( but can be inherited from Module) to be loaded instead of module. In that case you have advantages of referencing the code the same way you would reference object in any other SWC library (you just need to mark it &#8220;external), have strong type support, and load it on demand.<br />
This technique is described in <a href="http://www.theriabook.com">our book</a> and in Flex Developer’s Journal – it&#8217;s available online – just google it.</p>
<p><span /></p>
<p><em>I will be posting on some random thoughts I had during that sessions &#8211; hopefully tonight on the way back</em></p>
<p><span /></p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/10/03/best-flex-practices-at-adobe-max-2007-%e2%80%93-recap/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom MetaTags Access &#8211; Thing I did not know about Flex – thanks to Christophe Coenraets in his very inspiring “Local Data Synchronization in AIR” talk this morning</title>
		<link>http://flexblog.faratasystems.com/2007/10/02/custom-metatags-access-thing-i-did-not-know-about-flex-%e2%80%93-thanks-to-christophe-coenraets-in-his-very-inspiring-%e2%80%9clocal-data-synchronization-in-air%e2%80%9d-talk-this-morning</link>
		<comments>http://flexblog.faratasystems.com/2007/10/02/custom-metatags-access-thing-i-did-not-know-about-flex-%e2%80%93-thanks-to-christophe-coenraets-in-his-very-inspiring-%e2%80%9clocal-data-synchronization-in-air%e2%80%9d-talk-this-morning#comments</comments>
		<pubDate>Wed, 03 Oct 2007 03:31:37 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=251</guid>
		<description><![CDATA[One cool thing I wished I knew a year and a half ago was a question on how to keep / get additional metatags from the class definition. I actually asked Flex Team members last summer about that feature, but did not get the answer then.
This is embarrassing as you can kind of derive it [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">One cool thing I wished I knew a year and a half ago was a question on how to keep / get additional metatags from the class definition. I actually asked Flex Team members last summer about that feature, but did not get the answer then.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">This is embarrassing as you can kind of derive it from documentation if you know it is there, but I asked few Flex experts if they knew about this compiler feature – feel much better now as nobody knew as well.</span></p>
<p style="margin-bottom: 0pt" class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">OK, we are talking about <code>&lt;strong&gt;keep-as3-metadata&lt;/strong&gt;</code><code>=&lt;em&gt;class_name&lt;/em&gt; [&#46;..] option -&nbsp;&nbsp;here is excerpt from help:</code></span></p>
<p style="margin-bottom: 0pt" class="MsoNormal"><span style="font-size: 8.5pt; line-height: 115%">Specifies metadata that you want to keep.</span></p>
<p style="margin-bottom: 0pt; line-height: normal" class="MsoNormal"><span style="font-size: 8.5pt">By default, the compiler keeps the following metadata:</span></p>
<p style="margin: 0in 0in 0pt 12pt; text-indent: -0.25in; line-height: normal" class="MsoNormal"><span style="font-size: 10pt; color: black; font-family: Symbol"> ·         </span><span style="font-size: 8.5pt">Bindable </span></p>
<p style="margin: 0in 0in 0pt 12pt; text-indent: -0.25in; line-height: normal" class="MsoNormal"><span style="font-size: 10pt; color: black; font-family: Symbol"> ·         </span><span style="font-size: 8.5pt">Managed </span></p>
<p style="margin: 0in 0in 0pt 12pt; text-indent: -0.25in; line-height: normal" class="MsoNormal"><span style="font-size: 10pt; color: black; font-family: Symbol">·         </span><span style="font-size: 8.5pt">ChangeEvent </span></p>
<p style="margin: 0in 0in 0pt 12pt; text-indent: -0.25in; line-height: normal" class="MsoNormal"><span style="font-size: 10pt; color: black; font-family: Symbol">·         </span><span style="font-size: 8.5pt">NonCommittingChangeEvent </span></p>
<p style="margin: 0in 0in 0pt 12pt; text-indent: -0.25in; line-height: normal" class="MsoNormal"><span style="font-size: 10pt; color: black; font-family: Symbol">·         </span><span style="font-size: 8.5pt">Transient </span></p>
<p style="margin-bottom: 0pt; line-height: normal" class="MsoNormal"><span style="font-size: 8.5pt">If you want to preserve the default metadata, you should use the += operator to append your new metadata, rather than the = operator which replaces the default metadata.</span></p>
<p style="margin-bottom: 0pt; line-height: normal" class="MsoNormal"><span style="font-size: 8.5pt">This is an advanced option.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%" /></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">That means that you can ask compiler to keep information about events your objects declare. You can define your own metatags, and they can be persisted in the class definition as part of objects XML definition.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">You still cannot use metatags at the compile time as compiler stays closed till (and then some time after they open sources it due to standard “acceptance” process), but you can use these annotations in runtime. That opens a whole new world of embedding and using metadata information – that is really a major feature for any framework/component developer. </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">I need to do some performance and usability tests, but the way it looks like now it is the most straightforward and efficient way to embed/carry the metadata.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%" /></p>
<p class="MsoNormal"><span style="font-size: 12pt; line-height: 115%">Sincerely,<br />
Anatole Tartakovsky</span></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/10/02/custom-metatags-access-thing-i-did-not-know-about-flex-%e2%80%93-thanks-to-christophe-coenraets-in-his-very-inspiring-%e2%80%9clocal-data-synchronization-in-air%e2%80%9d-talk-this-morning/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MAX Ignite Session &#8211; Making Enterprises Apps Development  Fun with Flex or something like that</title>
		<link>http://flexblog.faratasystems.com/2007/10/01/max-ignite</link>
		<comments>http://flexblog.faratasystems.com/2007/10/01/max-ignite#comments</comments>
		<pubDate>Mon, 01 Oct 2007 14:05:40 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=248</guid>
		<description><![CDATA[  I am making small (5 minutes) presentation at Ignite / Welcome Reception  at Adobe MAX 2007 later today &#8211; talking about making enterprise workspace fun again. I will talk about what works and what does not. 5 minutes is really short time, especially for people who code faster then speak.
Come say hello [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://tinyurl.com/youze7" />  I am making small (5 minutes) presentation at Ignite / Welcome Reception  at Adobe MAX 2007 later today &#8211; talking about making enterprise workspace fun again. I will talk about what works and what does not. 5 minutes is really short time, especially for people who code faster then speak.</p>
<p>Come say hello if you are at MAX, I will also be in the &#8220;ring&#8221; for &#8220;Best Practices&#8221; session on Tuesday.</p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/10/01/max-ignite/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advocating the high-end code generators</title>
		<link>http://flexblog.faratasystems.com/2007/09/04/advocating-the-high-end-code-generators</link>
		<comments>http://flexblog.faratasystems.com/2007/09/04/advocating-the-high-end-code-generators#comments</comments>
		<pubDate>Tue, 04 Sep 2007 19:02:45 +0000</pubDate>
		<dc:creator>Anatole Tartakovsky</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>

		<guid isPermaLink="false">http://flexblog.faratasystems.com/?p=238</guid>
		<description><![CDATA[Recently, I watched  two presentations on the Flex integration with the back-end applications. The presenters have shown how to build a database-enabled applications in &#8211; oh, well &#8211; 55 minutes. And they were using pre-built code and other &#8220;magic&#8221; tricks. In one case, an XML contained SQL that was interprted in the service. The [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I watched  two presentations on the Flex integration with the back-end applications. The presenters have shown how to build a database-enabled applications in &#8211; oh, well &#8211; 55 minutes. And they were using pre-built code and other &#8220;magic&#8221; tricks. In one case, an XML contained SQL that was interprted in the service. The presenter had a  visual wizard to generate code. Both were very generic and dead simple.<br />
That&#8217;s exactly what I did not like. Please don&#8217;t get me wrong. I like it simple. I am also big fan of things that work. Neither of this approaches works <em>for me.</em></p>
<p>I am an old user of SQL tools that allow you to use SQL as a language, provide metrics, execution plans, use statistics, etc. A typical enterprise query can take seconds or hours &#8211; it is up to the programmer in most cases. As far as updates go, they never come by themselves. Transactions, workflow triggers and messaging are just a beginning.</p>
<p>You can try to wrap the generated code or service with additional assemblers. You loose development transparency as these are the wrappers for thing that are going to be re-generated. Additional management, build and fixing errors eats up all time saved by the code generation.</p>
<p>The second problem is with generics. I love to do more stuff with collections, arrays and lists. I also like Object and HashMaps &#8211; <em><strong>in some portions </strong></em>of the code. But strong typing provides performance, size and coding benefits that are hard to overlook.</p>
<p>I am guilty of building both types of code generators in the past. After using them for different industries and applications, I can say that their applicability is very limited: these code generators work for the low-end systems that have very limited use for them in the first place. For most of the systems you have to have a two-way tool, which allows you to write your own code in addition to the generated one.</p>
<p>The productivity environments that interpret back-end data  are mixing SQL as first-class citizens with the application code. That is the only way to reach required flexibility. With compiled languages like Java it is not that simple. In order to achieve high performance and flexibility you need to mix the code but generate artifacts to work with SQL during the compilation stage. Java annotations (and SQL embedding for C++) are <strong><a title="Clear Data Builder" target="_blank" href="http://www.myflex.org">typical technologies that we use</a></strong><br />
The concept is very simple &#8211; you use abstract classes to mix your application code with the abstract methods for SQL code. This abstract methods are annotated with SQL. You can code against strongly typed classes and if the code generation fails, your compiler complains about abstract methods.</p>
<p>With the single point of maintenance we eliminate most of the integration/build issues. You can get the same 55 minutes application done in 5, but important point is that you will not be stuck for days afterwards.</p>
<p>If you have just five (not fifty five) minutes, please watch <strong><a href="http://myflex.org/screencast/cdb_example/cdb_example.html">this pre-recorded demo</a> </strong>of our code generator called Clear Data Builder.</p>
<p>Sincerely,</p>
<p>Anatole Tartakovsky</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.faratasystems.com/2007/09/04/advocating-the-high-end-code-generators/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

