How many times you’ve had an idea of an application (CD’s database, a library, revolutionary issue tracking system etc.) and you could not find the time to start coding it? I know I did several times.
And even with “create a blog app in less then x minutes” kind of framework, you still need to write code, and actually need to digg into each if, for or while of the classes behind. And no matter how clean your language is, or how domain driven you design is, you still need to tell the machine what you have in mind, and, what’s frustrating me most, not in the way it’s in your mind.
And imagine that you sit right beside your client and you wanna make sure that she agrees as much as possible with what you’re about to implement. In this case, how much time do you need to mock up something that really shows how the real thing will work?
There might be cool frameworks out there that just know what CRUD operation are, but software is most of the time more then CRUD. Most of what the user sees is the UI, and the UI is far more complex then basic CRUD database operations.
On the other hand, given the complexity of software, one may easily (or hardly sometimes) find that there are certain patterns that a developer gets to implement yet again and again. The examples are countless. From simple object creation/updating to user rights based visualization.
And since the patterns are there and well known, what’s so hard to think of a tool that actually has all the knowledge built in and sort of leads you through the steps of applying those patterns?
If there is no such think as “New Bridge Pattern Implementation Wizard” in your favorite IDE, does it means that the IDE should not be able to understand that a form (web or desktop) should not be submitted with invalid fields and not be submitted twice (hence disable OK button on submit)?
How many combinations of OK-Save-Cancel-Help are in the applications we all use every day?
Given a button in a toolbar, which is the probability that button’s action will impact somehow (CRUD?) the selected item(s) somewhere close to the button? Like, for instance, in a table or in a tree or a list.
The combinations and possibilities are countless but the basic bricks are well known and well defined (a button may be clicked but not flipped or dragged). What a developer does most of the time is assembly those bricks in a set of yet another well known but little more complex pieces of walls. And man, how many times they get it all wrong!?
So, these are some of the reasons that made me start this FlairBuidler project. Initially was built in Java Swing, as quick and dirty as it can be done in Java. It got too dirty to continue it, so I said to myself that a web based application should be more appealing to users.
So, here I am with a Flex version. Working with Flex for regular application it’s OK. Making an application that actually relies on Flex as framework is just great. You get to discover (together with some weired bugs
) the great design behind the framework. More about that in future posts.
The separation of MXML and AS code, data binding, event system, class metadata, all these made the Flex implementation much more cleaner and flexible and faster (development time). There are still lots of things to do, lots of optimizations to be made but one thing is sure. Flex is not the kind of framework that gets in your way. It’s a great technology and it deserves it’s place as no. 1 RIA technology.
Coming soon with more details about the features that FlairBuilder has right now, and the set of features I am planning to implement in the near future.
blog