Archive for October, 2006

Grey Line

This one is on the top of my list of “the most wanted” for Flex 3.0. I am tired of the treatment MXML gets from us coders. In ActionScript classes you can make class “dynamic” and add properties at will. There is no similar construct on MXML.

Here is what I think would work and be very “natural”. If you use a MXML tag derived from “dynamic” (actionscript) class, MXML should allow unknown attributes – without a warning. To force type information on the unknown attributes developers can use {binding} notation – we are misusing it for initialization anyway, so it would be quite natural.

I would also argue in favor of “dynamic” or “expando” attribute on every control for application developers (changing a hat). A lot of “business layer frameworking” could have been avoided if each object would expose a single “Object” property you can add your props to. That would allow application “polymorphism” in a dynamic way that is different to tachings of pure programming science but greatly simplifes application coding.

Here are examples of cumbersome code that would greatly simplified (no need for extra classes, simplier syntax, etc.) by the above approach:

http://samples.faratasystems.com/AdvancedDataGrid/index.html – there is complete source there – PropertyBagDemo is a good example of “dynamic” approach. By the way, thanks everyone for the emails on this one!

Thank you,

Anatole

Comments (4)

 

Grey Line

I’m sure, lots of small companies around the world got goose bumps after hearing this loud announcement that Adobe offers $100M in venture capital for making killer apps for Apollo. MAX excitement is over, and let’s get down to business. To put it simple, “Show me the money”.

We at Farata Systems have some ideas of useful applications that we could have developed should we had more time and resources. Typically, to get funding, you need to put up a business plan together and show it to someone. To whom? Anyone knows the URL or any other means of claiming a slice of this Rich (as in $100M) Internet Application Pie?

Thanks,

Yakov

Comments (4)

 

Grey Line

The term Rich Internet Applications (RIA) was introduced by Macromedia back in 2002. To the best of my knowledge, RIA is a combination of low-cost deployment model of the Web browsers and networked platforms and a rich user experience that is at least as good as with today’s desktop applications. In addition to this, RIA do not require entire Web page refresh for updating their data, which translates to much faster response time and more efficient utilization of the network bandwidth. Think of a globally available rich client-server application.

Regardless of when the term was introduced, first RIA applications were born as early as 1995, when Java language has been created. Initially, Java became popular because it has presented small downloadable Java programs called applets (remember the dancing Duke?), which were created with Java AWT (and then Swing) libraries and ran in the Web browser’s Java Virtual Machine (JVM). Ironically, this technology that made the Java language popular, was pushed back, and today Java shines mostly on the server side and in mobile devices.

In 2004, yet another catchy term Web 2.0 was coined by Tim O’Reilly. As of now, no one has clearly defined what makes a Web site to qualify for this term. If someone sees a cool looking Web site, s/he calls it Web 2.0. But the idea of marking better looking products with the version 2.0 , is pretty popular these days. Often, it refers to social engineering sites that allow people to collaborate and build the content of the sites themselves.

Wikipedia offers a lengthy article about Web 2.0 that may give you some idea of what this term means.

I wonder if anyone can provide a definition of Web 2.0 in one sentence? This is one of the fuzziest terms I’ve ever heard.

In my opinion, “Web 2.0 defines any cool highly-interactive Web application of the first decade of the 21st century“.
It goes without saying that Tim O’Reilly is a good businessman, and while I was trying to come up with a free definition that people would understand, today O’Reilly has announced availability of a special report called Web 2.0 Principles and Best Practices . Sounds great! The only little problem is that this one-hundred page report cost $375 USD. Ouch! I’d like to read it, but can’t afford it.

Here comes the new one: Web 3.0 is referring to a semantic Web… Do you know what this means? Anyone?

Yakov

Comments (1)

 

Grey Line

We are publishing a set of three articles (excerpts from our book) in ColdFusion magazine (October, November and December) on advanced DataGrid techniques. Let the name of the magazine not mislead you – thes articles are written for all Flex developers, regardless of what has server-side technology they use. Here is the url to all code samples from these articles:

http://samples.faratasystems.com/AdvancedDataGrid/index.html

Please note that source is available on the first page only. Also, was deploying in the rush – with debugging player you might see message boxes asking for debugger – just cancel them.

Enjoy,

Anatole

Comments (6)

 

Grey Line

While the term Ajax was introduced in 2005, the technique of using XMLHttpRequest object was known since 1999 (this object became available in Internet Explorer 5). But up till now XMLHttpRequest object was never standardized by World Wide Web Consortium. This technically means that each Web Browser vendor can implement it differently.

Such Internet giants as Google, Yahoo, Amazon started using Ajax in their applications, which brought interest of business application developers who always wanted to make their Web applications less static and minimize page refreshes. A discussion on usability of Ajax for business applications is out of the scope of this article.

When I was learning how to work with AJAX, I went through a number of 101-type articles. The biggest problem with these tutorials is that the authors are trying to explain several things at once, which is confusing. I’ll try to offer you a very simple example of an Ajax application that will illustrate the “refreshless” nature of Ajax. Here’s a simple HTML page:


Click on the link, and the text area will be populated with the content of the server side file, which in our example has the text “Hello from the server!”

What’s the big deal? There is no entire Web page refresh! The XMLHttpRequest object sends an asynchronous request to the server, gets the data back and changes the content of just one object on this HTML page – the text area.

<form name="myForm">
<a href="http://yakovfain.javadevelopersjournal.com/how_the_ajax_magic_works.htm">Read more...</a></form>Yakov

Comments off

 

Grey Line

After attending half a dozen conferences this year I took a break and did not go to MAX. I check MXNA blog aggregator daily, but finding useful info is not easy. This is how a typical blog looks like. Yo man, it’s so cool! I’m going to MAX in three days! Two days till the conference… One…I’m in the airport. My flight is delayed. And again. And again. Finally I’m up in the air. What happen to the beer? Five bucks? You gotta be kidding me. That’s a bummer. The good news is that now they allow three ounce shampoo on the plain. I should not forget to take a dozen of these little shampoo and body lotions from my Venetian hotel room. By the way, anyone knows what the body lotion is for? Is it supposed to be used while in shower or after? There is no instructions on the bottle. Need to check Wikipedia…

I’m in Vegas! They gave me this military bag with some promo junk. Let me throw it away real quick. This bag is going to be for my cousin Vinni. Need to pick up a couple of XXL T-shirts on the vendor’s floor for my ant and mom.

Almost forgot about the Flex/ActionScript posters! Here they are! Yep, they are free! Adobe wanted to sell them for ten bucks each, but the entire blogosphere said, “Ain’t gonna buy no stinking posters for ten bucks”. I like Adobe. They always listen to the community, and now these great posters are free. This poster discussion is the most popular subject of the week at mxna. Finally I can get rid of this old J-Lo poster in my cube. She’s not that hot anymore.

Let me check the mxna feed and see what other guys are blogging about. Lemme see…Max is so cool…Cool is Max… Is Max Cool?…Adobe has released Flex Builder 2 for Mac OS X. Is there such thing as Flex Builder 1?

Several guys are leaking. They are leaking this tomorrow’s opening keynote. Everyone’s saying that we should be there at least for the first ten minutes. Some Blue Guys are giving either a demo or a show. I need more T-shirts.
My schedule for tomorrow is finally shaping up:
8:30-8:40 – keynote. Ben Forta hits 3 millionth mile spreading the good word about ColdFusion. I hope he’s in American Express miles award program. Ben, Bloomingdales gives away gift certificates: $1 for each hundred Amex miles. Your wife deserves these thirty grand! I have great respect of this man, really!
100K Flex developers. I wonder how they count? Is this just a number of downloads? Since Flex framework is free, you can’t even count sold licenses now. This raises one more question. The MAX book store was carrying 60 copies of the Flex Training from the source book, which is the only Flex tutorial available today and you can’t but it in stores yet. Hello Adobe marketing! I guess you’ve never heard of 100K Flex developers. No worries. The store promises another 40 copies of the book for the day 2. Round of applause to the newly hired Adobe Senior VP of marketing…I guess she needs some more time.

8:45-9:30 – hit some slot machines to warm up
9:30-10:30 – Black Jack table
10:30-11:15 – I’m presenting on Flex 2 tips and tricks
11:15-2PM – Roulette table

Hmmm, if you use the random number generator from ActionScript and the PieChart component from Flex Charting, you can easily emulate a roulette table! I just need to learn how to spin it! Should I register a new startup Online Flex Gambling right here in Vegas or Delaware is still the best for incorporation? I’ll need to create a number of skins for the roulette, a couple of transitions effects for showing the winning number, add some audio, which is piece of cake in Flash Player.

2:15 –4PM Hit the vendors floor. Do not get intimidated. Like the design of this T-shirt? Just stop by the booth, introduce yourself and spend five minutes listening to the brouhaha about how the product XYZ will revolutionize your life. Get the T-shirt and move to the next table. Look at these nice little glowing pens! Aren’t they something? Just give these vendors your business card and bring home a couple of pens for your kids. You’ll sure get this annoying phone call from their salesman in a month or so, but it’s in a month… while your kids will start enjoying these pens next week. Daddy came back from the business trip! What did you get for us? Look at this lady in red: she carries a huge bag of freebies and brochures. Trust me, she’s not going to read them. In the best case scenario, she’ll bring them to her office after MAX. But most likely she’ll leave them in the hotel room instead of tipping the maid.

4-5PM Attending a session on E4X. I need to learn how to write an RSS feed.

OK, Create XMLListCollection, declare a Filter object on it. Got it. The call to refresh functions will actually remove unwanted blog entries. How many mxna aggregates? More then 900? I’ll keep a couple of dozens in my feed. Where Celine Dion is singing? In Caesars? E4X rules! Flex 2 rules! Flex rules 2! Adobe is cool! Can’t wait till MAX 2007!

Yours truly,

Yakov

P.S. There are two bloggers that take good notes at MAX: Jen deHaan and Tariq Ahmed Thank you, guys!

Comments (5)

 

Grey Line

As a tribute to MAX2006, we have uploaded the latest release of our open-source daoFlex code generator and library.

What’s cool in this release? We now support complete data synchronization via Flex Remoting. Here is how: we’ve created a ActionScript class DataCollection that descends from ArrayCollection, but it is “destination-aware” and has its own methods fill() and sync(). DataCollection knows how many elements have been modified, created, deleted, etc. and can manipulate them freely.

ActionScript class BatchService allows sending updates done to multiple DataCollections in our batch. We wrote a small BatchGateway destination which applies such batch as a unit of work (JTA transaction). More, you can batch arbitrary remote calls, say invoking a stored procedure in the same transaction. And watch this: you can do this without writing a single line in Java, except defining annotated abstract classes.

So now you can use Flex Remoting for your data synchronization with back-end on par with Flex Data Services. These technologies are complementary to each other. Use Flex Data Services when you need the server push and pagination. For all other use cases Remoting is sufficient. Classes generated by daoFlex are universal for either solution. You take the side, we will supply the ammo :)

If you are in Vegas this week, I’ll be showing it in action at MAXUP.

Victor Rasputnis

Comments (6)

 

Grey Line

Ten years ago I’ve been doing PowerBuilder and my mentality was different: first, I was the best friend of business users, and second I did not really worry about what’s under the hood. I could do stuff quickly, or using the modern jargon, I was an agile programmer without even knowing this (on the same note, lots of people were creating Ajax applications five years ago without knowing this, but it’s off topic). I’d ask the business user Joe, “How do you usually do your business, what would you like to have on this screen, what step do you do after this step?” Most likely Joe did not really know, but I’d still give him a wide American smile: “No problem, I’ll come back tomorrow and will show you something”. Mary, yes, you, “What’s the most important word in my last sentence?” No, Mary, not “I’ll come back”, but TOMORROW. Not next week, not next month, but tomorrow.

With DataWindow component it was easy. I did not have to pull Joe’s teeth, I was able to create a working prototype in a day, show it to Joe next day, his glassy look all of a sudden would become friendly and understanding. Now Joe was back in control: “No, Yakov, you did this part wrong, I want it differently”. No problem, Joe, I’ll see you tomorrow. Mary, what was the most important word in my last sentence? Good girl, Hasta maniana! I did not really know how DataWindow worked, but I trusted this component. PowerBuilder used event-driven programming model, which was clean and simple. An object A triggers an event XYZ on object B, and this event can carry a payload – the data that the object B needs to operate. Using the modern jargon it’s called Inversion of Control or Dependency Injection design pattern. Whatever. What’s important is that the object B does not know about the object A. Loose coupling in action.
Then I became a Java programmer, and my mentality have changed. Big time. I realized that the user’s screens are not that important, because I have an intimate knowledge of how programs work internally. Screw users. I’ll spend majority of my time designing a multi-tier system that does not really depend on any specific screen and is universal. Joe still asked me, when is our next meeting? In a month. Mary, do not raise you hand. I see that you know the most important word here. Why in a month? Because I could not do a decent prototype sooner (Java folks, easy, easy – Matisse was not even in the picture yet), and more importantly, we started to make fun of PowerBuilder or Visual Basic programmers who were thinking screens, while us, cool Java gurus, knew how the motor worked inside! These guys were enjoying a ride and counting cup holders, while we were thinking sparking plugs and combustion chambers. We were enjoying the process of programming in itself.

There is this Russian stand-up comedian Mickhail Zhvanetskiy, and one of his excellent phrases was “Who cares about the soup, when so much is going on in the kitchen!”

Now, with Flex I started to care about the soup again, because I can. I can change the prototype twice a day, and Joe does the same with his business requirements. No six-freaking-sigmas documentation. Napkin on the knee is back and it works. I’ll give the final OK to my server side Java team only after Joe is 100% happy.

Besides, with Flex I can have the best of both worlds: the source code of the Flex framework is available, I can learn how it works inside and override it (not always it’s as easy as it should be, but it’s doable).

Working with Flex promotes agile development. If you do not know what it is, get a really good book Agile Java Development with Spring, Hibernate and Eclipse. This is one of these mis-titled books, which has not much to do with Spring, Hibernate and Eclipse other than the fact that it comes with the working sample application written with these tool/technologies. It presents an excellent overview of the development process in an enterprise Java shop. You’ll learn how to set up the environment, gather business requirements, and build the project deliverables in agile way.

Dear user, I’m your friend again! Now I’m as flexible as Flex can be. What do you want me to change?

Comments (2)

 

Grey Line

I’ll be teaching a hands-on Flex 2 class at NYU starting on November 9. It’s a  5-session evening class that will run over five weeks, which is a slow-pace way to learn how to create RIA with Flex. I still did not decide on the text book to recommend to the students for purchase.

Since I am Adobe Certified Flex instructor, I’m allowed to use Adobe’s original courseware. It’s a well written manual with great labs. The only thing is that the courseware may be a little expensive for students – need to talk to Adobe.

The other choice is O’Reilly book “Training from the Source“, but it’s printed version is not available yet.

And the third choice is to use three chapters of our upcoming book “Developing RIA with Flex and Java“. While this book is not a tutorial, it has beginning chapters where we just create a bunch of really small applications demonstrating various techniques/styles of programming. This “just-do-it” approach works well if there is an instructor in the room. The book is not printed yet, but I can create ten-page handouts. We’ll see.
NYU has already signed me up for a similar course in April 2007. There will be plenty of printed materials on Flex by the next Spring. I enjoy teaching programming and am looking forward to it.

Yakov Fain

Comments (2)

 

Grey Line

There is this blog and a nice looking demo showing how AJAX can happily live together with Flex charting. This vendor’s AJAX grid component is populated with the data first, and then using FABridge the data is being passed to the Flex Charting component. Typically blogs demos like this get a number of Wows , and I expect several “Cool, man” comments to this blog within the next day or so.
Since the blog authors have provided the decription of how this demo was made, I’ve read it and these are some of my questions/concerns.

I understand that these guys need to promote their AJAX grid component, and that’s why they’ve published this blog, but let me ask you this: if I’m planning to pass data to Flex components anyway, why on Earth not just use Flex Data Grid in the first place?

Then authors honestly admit: “To ensure that the details grid is still fast, we only render the part of the dataset that the user is looking at rather than rendering all 1000 records say, which can take a long time when you use the DOM innerHTML property.” That’s right guys, and instead of jumping through various hoops to overcome such issues, just use Flex DataGrid – it would be much faster.

Keep reading…

All of the sales data is transported from server to the client using Ajax, but subsequently massaged using XSLT and rendered using the FABridge and Flex Charting 2. This approach is particularly attractive since it enables us to preserve the way each tier in our application works as an Ajax application, and simply extend the application to include Flex.

If you’d use just Flex, you would not need to use XSL transformation to pass the grouped data to Flex. After doing your grouping on the server side, and sending the data to Flex collection once, and using data binding both controls would be populated.
Guys, I really wish you all the best in selling your AJAX grid, bit I’ll be honest with you: I won’t buy it. And you did not convince me that this demo is the right use of FABridge.

This is a  very good demo of bad practice.
Regards,

Yakov Fain

Comments (2)

 

Grey Line

ActionScript 3 allows a function to have a variable number of arguments by using so-called … (rest) parameter. Ellipses followed by the name represent an array parameter that can contain any number of comma-delimited arguments:

public static function calcTax(… taxParams):Number{
for (uint i=0; i< taxParams.length; i++){
trace(taxParams[i]);
}
}

Java programmers may find the … (rest) similar to the varargs notation. You can mix the … (rest) with other function parameters as long as it’s the last parameter listed.

Unless you use the rest parameter, AS3 creates in memory a special object called arguments, which is an array that include references to each of the arguments and a reference to function itself (arguments.callee). AS3 allows you to call a function with more parameters than were included in the function declaration, and each of the parameters can be access by using the arguments[i] notation.

Here’s an idea of using … (rest) parameter to overcome the absence of overloaded constructors in AS3:

public function MyCLass(…args) {
switch (args.length) {
case 0: constructor1(); return;
case 1: constructor2(args[0]); return;
case 2: constructor3(args[0], args[1]); return;

} }

This sample covers the case of constructors having different number of parameters. But if you want this solution to work with functions having the same number of parameters but different types, you’d need to add the type check to each of these cases above, i.e.

if(args[0] is String) {
//do one thing
}else if (args[0] is Number){
// do another thing
}

Comments (6)

 

Grey Line

Today’s assignment is to be able to run a Flex application against different servers (dev, uat, prod) without the need to recompile SWF. It does not take a rocket scientist to figure out that the URL of the server should be passed to SWF as a parameter, and we’ll do this by using a special variable flashVars in HTML wrapper. Flex documentation suggests to include flashVars parameters in the tags Object and Embed and read them using Application.application.parameters in AS3 code. At the time of this writing this does not work. But as the ancient saying goes, “Adobe closes one door but opens another”. Let’s get familiar with Flex code:

Read more…

Comments (9)

 

Grey Line

Just finished writing an article called “Polymorphism Without Interfaces”. I challenge you to review and explain the code below:

for(var i:uint = 0; i < workers.length; i++) {

var p:* = workers[i]["increasePay"];

output.text+=p==undefined?”no luck”:p(5);

}

The person who writes the best explanation, will get a free copy of my e-book “Java programming for kids, parents and grandparents “. I’m sure people understand the syntax of this code snippet, but I’m looking for an explanation of WHY it’s written this way.

Good luck,

Yakov

Comments (14)

 

Grey Line

I picked up a growing concern in flexcoders forum messages related to the need of itemRenderers use to do simple things – like changing the color of the field in DataGrid depending on the column value or things like that. Using the terminology from the forum, it is like “hunting a rabbit with elephant gun”.

So, let us switch the target. You want that customization functionality inline, with as little glue as possible. If you want common functionality in most of your controls, go to the lower level. DataGrid control has itemRenderer property to specify the factory used by all the controls on the DataGrid.

Add that to the previous post (http://flexblog.faratasystems.com/?p=91) – and you can have declarative way to add any behaviour to the datagrid columns. Here is my post from FlexCoders back in July  showing performance  of run-time styles implementation within DataGrid (case 3). Please note using formula checking the salary range for run-time colors styles:

case 1 : basic  grid – no formatting or styling

case 2:  basic grid with typical formatting – no styling
case 3:  typical usage of formatting and styling – IMPLEMENTED VIA RUN-TIME CSS AND COMPUTED EXPRESSIONS – very straightforward code in KISS paradigm. Use right mouse button to see the code for examples.

Personally, I hate big guns, but with this one you can safely offload most of run-time styling  and customization to the BA staff while maintaining control of the implementation and performance.

And the clients get code that is smaller, simplier to read and maintain

Enjoy,

Anatole

 

 

 

Comments off

 

Grey Line

In Java, if you’ve created an object from a particular class, you can use only properties and methods that were defined in this class. For example, if the following class:

class Person {
String name;
}

you can only manipulate with the name property:

Person p = new Person();
p.name = “Joe”;
System.out.println(p.name);

ActionScript calls such classes sealed, but it also has different animals: dynamic classes, which allow you to programmatically add new properties and behavior to classes during the run-time. Just add the magic keyword dynamic to the class definition:

dynamic class Person {
var name:String;
}

Now let’s add dynamically two variables name and age and the function printme() to the object of type Person:

Person p= new Person();
p.name=”Joe”;
p.age=25;
p.printMe = function () {
trace (p.name, p.age);
}
p.printMe(); // Joe 25

You do not have complete freedom though: you can dynamically add only public properties and methods. Of course, nothing comes for free and sealed classes are a bit more efficient in terms of memory consumption, because they do not need to create a hash table to store the properties and methods that are unknown during compilation. Another obvious restriction is that dynamically added functions can’t access private members of the dynamic class. Read the article Programming In Style or an Elevator Pitch to see how by just declaring standard Flex component dynamic, the your code becomes more simple and elegant.

In AS3, any function can be attached to a dynamically created property of a dynamic object, for example

function calcTax():Number {…}

var myObject:SomeObject = new SomeObject();
myObject.tax=calcTax; //add the tax property and attach the function calcTax()
var myTax=myObject.tax();

The delete operator destroys the property of an object and makes it eligible for garbage collection:

delete calcTax();
myTax=myObject.tax() // generates an error

Some of the Flex classes were defined as dynamic, i.e. Object, Array, MovieClip, NetConnection, TextField, and others. At the time of this writing, subclasses of dynamic classes are not dynamic by default.
Because of this, you may run into an ugly run-time error: imagine a sealed class S that extends a dynamic class D. If you create an object as
D myObj = new S(), an attempt to add a propery to myObj will produce a runtime error because the variable myObj points at a sealed object.

Let’s do a quick test. Create a new project in FlexBuilder and select ActionScript project as its type. Enter AS_Only_Project as the project name. In a couple of seconds you’ll see the auto-generated code that looks as follows:

package {
import flash.display.Sprite;

public class AS_Only_Project extends Sprite
{
public function AS_Only_Project()
{
}
}
}

Next, create a new class called D and check odd the Dynamic checkbox in FlexBuilder pop-up. You’ll get this class.

package {
public dynamic class D
{
}
}

Now, instantiate and test the dynamic nature of the class D by adding the constructor
public function AS_Only_Project()
{
var myD:D=new D();
myD.favoriteBand=”Pink Floyd”;
trace(“Favorite Band=”+myD.favoriteBand);
}
Run this application in the debug mode, and sure enough it’ll print

Favorite Band=Pink Floyd

Create one more sealed class called S inherited from the dynamic D:
package {
public class S extends D
{
}
}

An attempt to add properties on the fly to the instance of the class S fails miserably as expected:

var myS:D = new S();
myS.favoriteSinger=”Alla Pugacheva”;
trace(“Favorite Singer=”+myS.favoriteSinger);

ReferenceError: Error #1056: Cannot create property favoriteSinger on S.
at AS_Only_Project$iinit()[C:\TheRIABook\eclipse\AS_Only_Project\AS_Only_Project.as:13]

If you’ll try to instantiate your sealed class as follows:

var myS:D = new S() as D;

I have two news for you: the good news is that it compiles, and the bad (and expected) news is that it generates exactly the same runtime error.

Most likely Adobe’s gonna hire a hitman and kill me after the following statement, but I’m going to say it anyway (at least you’ll now who to blame)… May be I should not?…Life is so good, and I’d like to witness the success of Apollo…I’m sayyyiiiinng this:

If you need to add new functionality to one of the existing standard Flex components (buttons, comboboxes and the like), do not bother extending them and creating new classes. Just create one simple empty subclass with the keyword dynamic and instantiate and add new properties on the fly as needed, as was shown by the Smalltalk student in this article.

A sound of a silenced pistol shot. Curtain.

Yakov Fain

Comments (4)

 

Grey Line

Your old programming habits influence the style of your programming in any new language you learn. Let me illustrate my point using Flex.

We usually run Flex training for private clients of Farata Systems , but once in a while we teach public classes for people with different programming background (my next Flex class at New York University starts in November). All students usually get excited by Adobe Flex, but each of them comes with different understanding of how to do things right. So I’ll tell you the story that might have happened in a real life, but first, let me remind you of an old Indian tale about seven blind men and an elephant . In short, one blind man touched the elephant’s head, the other one touched the tail, someone was by the leg. And each of them visualized an elephant differently based on what he touched…

My students usually arrive to the classroom early, but this time three seats were empty. Five minutes later I got a phone call from one of them explaining that they got stuck in the elevator and will stay there for another fifteen minute until the serviceman arrives. Needless to say that each of them had a laptop (do not leave home without it), so I gave them a short assignment to trying to help them use this time productively.

Here’s the assignment: Create a Window with a Panel that can resize itself by clicking on the button +/- that is located in the right corner of the panel. One click should minimize the panel’s height to 20 pixels, and a subsequent one should maximize to 100 pixels, and so on.

Read more…

Comments off

 

Grey Line

Well, not quite, but (hopefully) we are getting  closer.

I have been following closely on the progress of Apollo and whatever news I could find on inroads it makes in different types of applications. It seems that more people who are lucky to get their hands on it are switching from Web applications to disconnected or partially disconnected ones ( http://www.onflex.org/ted/2006/09/svn-client-with-flashnetsocket-in.php is a good example). In other words, we are moving to desktop applications again – this time desktop 2.0. As history repeats itself, let us recap.

Desktop 1 arrived as intelligent and jazzy replacement of mainframe terminal. Terminal emulation has been major function within the first 10 years of Desktop 1 era. Few “killer apps” (1-2-3 and WordStar) changed the way people see computers. You could own your private data. And on the way, new set of technologies named client-server emerged – reflecting relationship between the new and the old. The main selling point of that was the ease of opening up server data to the end-user. And it did – taking away terminals and mainframe UI along the way

The server world fought back – we had 10 years of JEE and semi-intelligent browser terminals

We are getting really close to “client-web” revolution – this time making all the data in the world available and personal in the same time. The trick is to remake all killer applications of the past in a different context. In case of word processor or spreadsheet for me collaboration and privacy are more important then spellchecker (and it probably shows).

Here is what I think the game is going to be. Making application development simplier will get us half way there. From a personal experience, I believe that a small team of developers can create any “Office” component in Apollo before it ships. The other half is to put end-user in charge of “experience” they want. Here is an example - a lot of browser handicaps were “fixed” by toolbars and components. Making RIA platform and applications capable of cross-integration is going to be vital.

There is no question in my mind that working on AJAX and such is just a waste of time. Actually, I personally gave up on AJAX about 2 years ago (just before it got “named”). Microsoft was contacting software vendors who developed browser enhancements to see what features of their product can be used in IE7. We offered bunch of low-level technologies to cure JavaScript/browser problems - reliability, performance and productivity. The answer was that Microsoft is looking beyond the browser as the next Web platform.

This month we will finally start releasing commercial products for RIA platform. I can only assume from what I see and hear that quite a few others are on the verge of product delivery.  If you have interest in making Flex/Flash/Apollo platform succeed, you better get cranking on the next killer desktop app.

PS. I am starting small pet project on Flex virtualization. Quite often we need preconfigured server/application (not just Tomcat, but mySQL, certain messaging, workflow, etc products) to be available to the clients or people going through training here at the company. I was thinking of VMWare nano-vm appliance that could be dropped on any desktop or server for instant deployment. If you have similar requirements and would like to participate, please drop me a line – we can always use good developers and beta testers.

Sincerely

Anatole

 

Comments (4)

 

Grey Line

One piece of this week’s code seemed to be “typical” for UI in List/Tree control – overlay element that needs to be shown on the selected row(s)

Here is the used approach:

1. Inherit new control from the  Tree or List.

2. Define overlayRenderer getter/setter as ClassFactory

3. Override drawItem method of the control. You will need to look in the parent code, and make “if” statement on selected argument – if true, show or make new instance of overlay item and add it as a child to the item being drawn, if false remove/make invisible, and position it within the item.

Upside of such approach is that you do not have “column” of the “overlays” in the tree, but rather just one or few (depending on selection mode)

Enjoy,

Anatole

 

Comments (2)

 

 

cialis cananda canadian site for cialis can viagra be purchased without prescription viagra canadian pharmacy cialis on line india non pescription cialis order viagra uk levitra sales online how to buy cialis in canada cheap levitra without prescription propecia generic from india buy propecia without a prescription viagra quick delivery cialis samples cialis dosage cialis usa best way to use cialis viagra pay by e check find cheap cialis canadian viagra no prescription us viagra sold in us no prescription needed viagra sales from us buy cialis africa cheapest propecia prescription price cialis buy generic cialis online cialis canada on line cialis fast delivery cialis professionel buy vardenafil get free viagra sell viagra cialis delivery in 5 days or less canadian cheap viagra pills levitra sale viagra online in canada viagra canada 50mg buy female viagra online without prescription generic viagra canadian pharmacy generic viagra uk viagra online to canada cialis endurance cialis canadian cost super viagra uk cheap propecia canada cialis soft tablets pharmacy fast delivery viagra buy cheap uk viagra cialis com viagra ordering canada cialis order by mail buying cialis online canada viagra sale buy indian generic viagra buy viagra canada is it legal to buy viagra from canada purchase cialis no prescription viagra on line sale canada pharmacy best levitra prices cialis online canada no prescription drug hair loss propecia buy viagra online in the uk ed canadian pharmacy viagra pills online pharmacy propecia renova viagra online without prescription in canada tadalafil cheapest viagra buy brand name cialis no prescription needed best canadian pharmacy for propecia cheap 25mg viagra but viagra online with mastercard cheapest propecia uk baldness male propecia viagra cost soft viagra tabs viagra online shop france deer viagra cheap levitra cialis online ordering buy cialis best price cialis 10mg price how to buy cialis online with overnight shipping shop viagra pfizer where to get viagra viagra online 50mgs viagra cialis canadian pharmacy brand name cialis without prescription cialis mail order uk cheap propecia online cheapest propecia in uk discount viagra soft gels fast shiping viagra buy viagra in australia generic cialis 10mg cialis on line pricing in canada buy levitra without prescription cialis uk order cialis kanada buy viagra now how to get cialis without prescription drug viagra cheapest priced propecia viagra original buy online order viagra canada 5 mg propecia buy viagra visa cheapest propecia in uk original viagra where to buy cialis cheap viagra for mail order find cheapest cialis best price for propecia online health center for viagra prescriptions purchase discount viagra 10 mg vardenafil online canadian pharmacy viagra cheap viagra prescription online usa pharmacy viagra viagra cheapest prices canadian pharmacy discount cheap canadien viagra viagra femele viagra purchase online pharmacy canada viagra viagra mexico buy pfizer viagra online generic fda approved purchase no rx cialis canada viagra sales viagra pushups viagra online reviews cialis 20 mg canada cialis mail order uk canada online pharmacy propecia viagra from china cheapest levitra uk order viagra us buying propecia online discouont viagra levitra purchase viagra where to buy were to buy viagra buy viagra without rx levitra in uk how to buy levitra online propecia pay by check buy cialis pill fda approved viagra viagra online buy buy cialis online without prescription viagra online tester best place cialis canadian viagra sales best way to buy cialis online generic viagra viagra online 50mgs prescription viagra buying viagra now buy cialis canada purchase cialis us viagra england mexico viagra without prescription viagra cialis online canada canadian online cialis order discount viagra online natural viagra propecia candaian pharmacy lowest price viagra us pharmacy propecia or finasteride cialis ship to canada cialis 50 viagra online delivered next day canadian healthcare generic cialis how much is viagra fine levitra viagra price cheap propecia online india get propecia prescription cialis sample viagra prescription needed cheap viagra pills online free sample pack of cialis best price generic propecia cialis pharmacy online purchase viagra usa discount sale viagra bought cialis in mexico? viagra online without prescription united states propecia buy cialis philippines female viagra next day delivery approved cialis pharmacy tuna viagra viagra on line canada cialis and ketoconazole sales of viagra real viagra no prescription mexico online generic cialis 100 mg cialis canadian viagra generic canada pharmacy viagra super active viagra purchase on line pharmacy cheap propecia online canadian online pharmacy viagra online prescription propecia canada prescription viagra overnight delivery cialis cialis generic how to buy levitra online purchase cialis usa viagra dose brand por cialis online 100mg viagra canadian scam cheap cialis online canada cialis discount prices non generic levitra propecia sales canadian canadian healthcare generic cialis low cost viagra from canada buy cialis canada hydrochlorothiazide cialis health center for viagra prescriptions viagra cialis online cialis at canadian pharmacy online propecia prescription generic viagra australia cialis or viagra discount sale viagra viagra no prescription needed canadian generic viagra online best price for cialis viagra alternatives canada generic propecia buy 25mg viagra online canada generic viagra with echeck get cialis fast viagra onlines viagra prescriptions without medical overnight canadian viagra cialis without rx buy cialis on line no prescription viagra online without prescription in canada cialisis in canada propecia 1mg price canada cheap viagra buying generic viagra online for soft tabs viagra buy real viagra pills usa viagra price germany levitra.com cheapest viagra to buy online in uk discount levitra online viagra cialis trazodone cialis 5mg canada cialis 50 canada levitra order propecia viagra us pharmacy cheap generic viagra india usa cialis viagra cialis for sale cheapest propecia pharmacy online buying cheapest viagra no rx viagra best prices on generic cialis viagra tablet no prescription needed cialis overnight cialis professional 100 mg buy generic no online prescription viagra viagra canadian sales 50mg viagra retail price cialis online cheap cialis samples buy levitra online canada online canadian pharmacy propecia viagra pharmacy cialis 30 mg 50mg generic viagra wh ere can i buy cheap cialis viagra for canada levitra sell i need to buy propecia order levitra online were to buy viagra? cheap viagra 50mg cheap viagra canada online viagra levitra cialis viagra femele order viagra online no prescription purchasing cialis viagra echeck canadian healthcare viagra sales levitra online pharmacy cialis canada 5mg cheap propecia no prescription free viagra without prescription buy cialis from india buy cheap uk viagra cialis free delivery viagra uk usa cialis women cialis 20 mg 100 mg viagra fast order cialis viagra in usa order rx canadian cialis buy generic viagra canada cheap fast generic viagra samples of cialis low cost viagra from canada canadian cialis without a perscription generic propecia cheap online presription for viagra viagra online without prescription from india best propecia prices buy canada in propecia levitra 20 mg viagra samples buy viagra with discount overnight cialis delivery saturday online canadian pharmacy levitra cialis from canada buy viagra online canada i need viagra now cialis price in canada propecia sales canadian online propecia uk order viagra online uk cialis london delivery buy propecia now pharmacys that sell propecia buy cialis mexico what is viagra soft tabs buy viagra online from canada cialis without prescription brand name buy propecia without prescription cialis australia buying generic viagra online for generic cialis for sale cialis 50 cheap cialis without rx buy online propecia viagra no prescription canada cialis no rx required viagra in australia canadian generic cialis - best price viagra overnite can viagra be purchased without prescription cheap propecia no prescription viagra 25 mg online viagra prescription label buy propecia international pharmacy i want free viagra cialis online us cialis canada on line propecia cialis viagra purchase cialis soft tabs find cialis no prescription required pharmacy fast delivery viagra cialis woman viagra for less in the usa cialis professional no prescription where can i purchase propecia uk viagra sales best deal for propecia best reviewed cialis sites online levitra cheap discount cialis purchase no rx cialis buy cialis online china viagra soft tablets canadi an pharmacy propecia viagra in the united kingdom we deliver to canada viagra generic cialis cialis super viagra drug viagra cheap viagra ship next day buy viagra without a prescription no prescription cialis united-pharmacy viagra tablets cialis buy pfizer viagra online canada viagra sales discount cialis online buy prescription propecia without cheap propecia online india female viagra cheap pfizer viagra for sale homemade viagra cialis brand without prescription generic viagra canadian viagra online overnight viagra pharmacy buy viagra online canada viagra switzerland cheap levitra online cialis 5 mg where to buy viagra online women viagra cialis prices cialis canadian cost where to buy viagra best cialis prices best place to buy viagra viagra ordering generic cialis sales find discount cialis online original brand cialis buy cialis online uk cialis tabs cialis canadian pharmacy buy cialis on line no prescription going off propecia canadian pharmacy viagra cheap generic prescriptions propecia canadian soft viagra real cialis without prescription canadian cialis 20 mg cheap propecia canadian pharmancy order cialis online canada levitra purchase cialis no prescription needed buy cialis from mexico canadian generic viagra online generic propecia finasteride price cialis cialis 5mg canadian generic buy propecia prescriptions online pill decription of propecia viagra medication cialis soft womens viagra online viagra generic best prpice cialis brand name cialis internet generic cialis mexico: one day delivery cialis viagra without prescription low price cialis buy viagra online canada cialis generic online cheap viagra online canadian healthcare viagra online uk get viagra fast best shop for viagra best price propecia womens viagra cheap no prescription cialis generic drug viagra fed ex cheap levitra without prescription viagra injectable buy cialis overnight delivery generic viagra online pharmacy canadian online pharmacy viagra canadian low price cialis and viagra generic propecia viagra healthcare canadian pharmacy propecia cost cheap generic levitra buy cheap cialis online uk cialis sale overnight shipping order viagra 25mg online canada bought cialis in mexico? where to get a precription filled for viagra cialis express delivery viagra professional canada generic levitra cialis buy viagra online canada cialis dosage viagra overnight mail order propecia prescriptions cialis samples canada cialis online pharmacy viagra online usa purchase cialis without prescription canada viagra pharmacies scam brand name viagra cialis online ordering cialis soft tablets purchase levitra canadian pharmacy where to purchase cialis viagra costs generic viagra canada buy cheap propecia online generic propecia alternative best doses for propecia viagra online reviews levitra versus viagra drug hair loss propecia united healthcare viagra ed canadian pharmacy where buy viagra buy viagra from canada viagra online wit cheapest viagra anywhere canadian cialis no prescription buy propecia now cheap prescription propecia cialis on prescrition in australia canadain cialis buy cialis online without prescription canadian pharmacy cialis 5 mg is buying viagra online bad viagra dose viagra no prescription needed propecia no prescription cialis no prescription needed quick delivery cialis ottawa pharmacy viagra sales in canada deals on cialis cialis generic cialis health store how to buy levitra in canada please prescription. 20 purchase cialis vs. australia healthcare online viagra cheap viagra from india how to get some viagra best viagra buy in canada online cialis lowest price propecia buy viagra online paypal viagra availability in chicago cheap propecia uk purchase viagra from canada purchase real name brand viagra generic cialis next day delivery alternatives to cialis cialis mail order usa cialis canadian pharmacy generic cialis mexico cialis free delivery generic online propecia generic propecia sale sales cialis viagra and paypal viagra, overnight delivery canadian healthcare find cheap viagra online no prescription viagra brand cialis online lowest propecia price soft tab viagra cialis women purchase viagra online pharmacy rx1 buy propecia now levitra 20mg canadian pharmacy discount lowest price propecia best pfizer viagra for sale viagra canda purchasing cialis with next day delivery canadian medicine viagra viagra online delivered next day propecia canada viagra.com viagra for sale online in the uk herbal propecia viagra online 50mgs cialis medication cialis professional 100 mg cialis delivered fast viagra cialis online sales viagra to sell buying cialis no prescription viagra for sale united pharmacy buying propecia cheapest price viagra cialis canada cheap cialis free samples drug viagra viagra delivered one day compare cialis prices online levitra discount pfizer mexico viagra best price viagra buy viagra lowest price 30 day package of cialis viagra cialis sales price of propecia from canada canadian levitra without prescription viagra online without prescription from canada propecia for sale how do i order viagra online cialis delivered canada ordering viagra uk 50mg viagra no prescription cialis generica generic levitra canada buy viagra without pr canada healthcare viagra mexico pharmacy cialis 10 mg vardenafil online cialis from india viagra in usa order cheap canadian viagra pills approved viagra pharmacy cialis sales usa order generic viagra canada buy cialis pills cialis order by mail rx canadian cialis free viagra cheap generic viagra india where to buy cialis compare cialis prices online cheap cialis in uk professional cialis cialis pills for sale guaranteed cheapest viagra cialis 10 mg levitra discount cheap drugs, viagra buy generic cialis online from canada canadian pharmacy no prescription needed viagra prescription for cialis online canadian rx viagra canada cheap viagra buy online viagra cialis for sale in uk viagra in usa order get viagra without a prescription cialis online store price check 50mg viagra cheapest viagra prices best prices on generic cialis find cheap viagra online name brand cialis levitra prescription levitra canadian pharmacy buy cialis online in usa propecia with no prescription cialis delivered canada best price for generic cialis online prescription propecia cheap price viagra discount sale viagra herbal viagra wholesale buy cialis online uk brand cialis for sale cialis from qualified pharmacy viagra availability in chicago cialis without prescription brand name purchase discount cialis canadian non prescription viagra canadian pharmacy cialis professional online cheap viagra canada canada healthcare viagra brand cialis online free sample pack of cialis viagra discount can viagra be purchased without prescription viagra quick delivery cheap cialis discount drug propecia cialis no presciptions cialis professional canadian pharmacy viagra no prescription best price generic cialis can levitra be bought without a prescription mexican viagra cialis without a prescription viagra professional canadian pharmacy brand name viagra buy viagra from canada cialis for free usa buy viagra viagra echeck discount price viagra find cialis no prescription required buy viagra without rx canadian healthcare canadian viagra and healthcare viagra in us pharmacy, propecia soft gel viagra canadian healthcare online viagra cheap viagra canada cialis prices viagra online no prescription canadian pharmacy discount code viagra we deliver to canada viagra generic levitra canadian healthcare buying cialis soft tabs 100 mg viagra prices viagra for order levitra sales online viagra new zealand buy viagra pills viagra in usa buy cialis on line canadian low price cialis and viagra viagra north shore three meds viagra when will viagra be generic cheapest propecia uk cheap viagra without prescription purchase viagra online without prescription cialis online usa viagra lawyers by cialis online buy cheap generic propecia best viagra soft prices viagra canda cialis online canada no prescription viagra express delivery propecia for sale online propecia without perscription viagra 25 mg online can i buy viagra in canada get propecia online pharmacy buying viagra in canada canadian healthcare viagra uk purchase viagra without prescription how to buy cialis viagra online in spain viagra pfizer no prescription cheap levitra without prescription cialis next day viagra north shore homemade cialis cialis no prescription needed quick delivery purchase cialis from us viagra free trial pack cheapest propecia indian cialis rx generic viagra cialis online canadian pharmacy buy viagra online without a prescription info viagra generic viagra online pharmacy generico viagra were to buy viagra online indian viagra cialis delivery canadian pharmacy viagra brand aus viagra viagra pill cheepest cialis cialis no rx discount generic propecia viagra 50mg no prescription 10mg levitra get viagra buy cheap propecia internet pharmacy propecia cost viagra propecia generic canada buy cialis on where to purchase cialis cialis 100 mg buy real cialis online get cialis very fast purchase discount cialis canadian viagra for sale cheapest price propecia cheap viagra canadian chemist generic propecia cheap purchase cialis online without prescription cheapest viagra to buy online in uk generic propecia india real viagra pharmacy prescription how much to buy viagra in pounds purchase viagra online best price generic propecia cialis canada online drugstore non prescription cialis buy cialis online usa viagra in usa levitra tablets canadian pharmacy viagra cheap cheap viagra internet 5mg cialis online viagra alternatives cialis +2 free viagra combine cialis and levitra best viagra and popular in uk cialis women viagra pharmacy cialis alternatives viagra cialis for sale buy propecia online usa how to order one viagra canadian healthcare online viagra levitra sales cialis health store online pharmacy canada viagra generic propecia online pharmacy online viagra levitra cialis viagra for sale fast viagra usa branded viagra cialis canada on line propecia in canada daily cialis online buy generic cialis canada viagra overnight shipping 100 mg viagra canada pfizer viagra cheap real viagra to buy propecia dr dallas levitra for sale canadian health care pharmacy order viagra viagra online uk usa cialis sales buy cialis without rx viagra canadian chemist online generic cialis 100 mg cialis from india tablet viagra propecia online usa viagra seizures viagra soft cialis and viagra on li cialis india pharmacy buy canadian cialis online best price propecia canada info viagra daily cialis for sale buy levitra online without prescription viagra 100mg england cheap cialis canada cialis eli lilly cialis for sale in uk quality cialis soft tabs cialis buy cialis online no prescription cialis online sale how much cialis canadian cialisis buy viagra 100mg cheap discount cialis safe online to buy cialis buy viagra online real brand viagra for sale viagra cheap fast shipping finasteride no prescription viagra pharmacy london how to get cialis in canada viagra express delivery buy real viagra pills usa cialis online uk viagra without prescription levitra viagra cialis brand cialis online fast shiping viagra canadiancialis viagra 100 non pescription cialis mail online order propecia canadian pharmacy for generic cialis viagra mastercard cialis by mail viagra professional canada order propecia online pharmacy canada cialis buying propecia online cialis vs levitra next day delivery cialis discount online propecia generic propecia in uk purchase viagra from us propecia 1mg price cialis online uk quick united states viagra cheapest cialis to buy online cialis mexico sell viagra tennessee online pharmacy propecia viagra fast shipping purchase cialis no prescription cialis online order cialis canadian buy cialis uk viagra soft tabs 50 mg canadian pharmacy for cialis canada viagra pharmacies scam canadian pharmacy cialis soft www.viagra.com 25mg viagra online search: rx1 cialis cialis daily canada branded viagra order cialis from canada cialis online shop cheapest propecia uk cheap viagra with fast delivery cialis fast delivery viagra online to canada brand viagra canada usa cialis selling propecia online cialis 10 mg best price for propecia online free cialis sample cialis samples canada viagra/cialis sales best prices for propecia pfizer viagra