There are many things you have to consider when you are trying to reduce the sfw file size. There are many obvious solutions like modularizing your application so your main application will load only the common code for an standard user and separating the rest in logical pieces, but you have to understand a little bit of how the compiler works, but basically understand that the compiler will pick and package only the necessary classes for that specific module or application, so is not just separate and compile, you have to design how are you going to compile and ship your application.
But this time I want to talk about embedding images, recently on a project I am working on I stared trying to reduce the application size. I found many reasons why the application was needing this, but embeddings is the easier to find.
We know embedding images increase the size of the file, but thats not it, make sure the image is not embedded more than once. This application was using the same images across the app like am other, but the problem was that every time they wanted to show it, they were embedding it again and again. That’s a very common mistake, since many developers might thing that by having the image on the source, will add only once, but if you check the generated code you will see that the image is been serialized every time you embed it. To solve this problem there are many other solutions, but the easier one at this point of the project, the easier was to create a singleton class called, IconGetter that embed the application images once, for example:
private static var instance:IconGetter = new IconGetter();
[Embed(source="logo.gif")]
[Bindable]
public var logo:Class;
[Embed(source="broken.gif")]
[Bindable]
private var broken:Class;
public static function get instance():Singleton
{
return instance;
}
public static function getIcon(name:String):Class{
var icon:Class;
try{
icon=instance[name]
}catch(e:Error){
icon=instance["broken"]
}
return icon;
}
I forced the variables be name with the same image name to return the right image based on the name rather than writing a “case” sentence to find it, the developer just need to know the image name. Another advantage was that this class could be generated with a java class looping through the images..;-)… plus it was going to be easier to “find and replace all” the current embeddings for the new static function call. But if you think about how much you can reduce the size of your application, is worth the effort, plus now you can move this class to a separate library and make it a RSL library to load it only once.
The RSL library depends on the application and needs to be evaluated if is beneficial for that specific case, RSL’s are not always better in some cases. We will write something about it later.
Last week attended to a training called “Flex for Enterprise Architects ” with FarataSystems and i seriously recommend it to other Architects to see all the tricks they have learned and use the ones that apply to your project. They have a lot of experience on trying to deliver “real time” data because of the type of clients they have had. Also they shared a good chunk of tips about modules and application size optimization.
One of the best parts of the training al least for me was the Flex patterns, they talked about some of the patterns that they have found in their experience, i guess there are more around, but from my point of view this is what is lacking on Flex. Thre are no patterns or guidelines, you can do the same thing in 100 different ways, but nobody is saying what is the best or the correct one.
Another thing that “again” was very obvious was the lack of a good Flex framework. Everybody or almost everybody was complaining Cairngorm and others were looking for a good framework to use, but not even them are willing to take the risk or recommend it, actually they remove or try to remove it from their customer applications. Is understandable, you don’t have to be a rocket scientist to find they issues you will have in long term with it. They have a very good comparison of Flex frameworks, that’s the only place i got a little confused, they imply that you don’t need a framework to build an application, and i agree if you are building a very small application, but if you have a development group of 5 or more and a big application you really need something. I have been working and building frameworks for several years already, and i designed and build a Flex framework for the same reason (there isn’t a good one out there) and i have seen the difference that a good framework can do. Imaging all those applications build on struts been build without it…Actually they are building a good set of utilities to facilitate development and i think they would be very capable team of people that can finally build the most wanted Flex framework. I wish i can share my work with the framework but you know how this works, is the company code and i cant just open it to the public, but i hope i can eventually do somethingon my time and give something to the flex comunity.
But if you ever get the opportunity to go to a training, you are a strong Flex developer AND you have the option to propose or make decisions about your project, its definitely worth it.
After an introduction to channels with FarataSystems guys and their explanation about the difference between them, i came back wondering what would be the best channel communication option for my current project and i found a very good blog post that outline every channel configuration you have available on BlazeDs and LCDS. If you are working with any of these , you will really appreciate the work that Damon Cooper put on it.
You might need some additional knowledge about protocols and connections, but if you don’t know about it, then it will be even better so this blog will lead you to learn some more stuff.
I have been looking for something like this for long time and i think i wasted a lot more time looking for this, than the time to took me to build it, its actually a very simple way of laying our the components, but very powerful when you are writing corporate or form based applications. The question is simple, how can we have a multi colum form component, i am wrting a Form component that will have a more powerfull layout, holds data, reset and validate the content, but this time i just wanted to share this way to layout a multi column form, i will share the full component once is done, otherways the post will get too long. So this basic layout has to modes, one is Column mode and the other one is Direction mode ( dont orget to right click to see the source code).
Its basically reusing the form component and aligning them using boxes, i don’t know how useful is this for you, but if you are interested on the full component, let me know.
I think I saw this application some time ago, but it looks like is been improved a lot, this is one of the most interesting Javascript exercises I have ever seen, very impressive!!!. I haven’t had the chance of follow the code, but i downloaded it and is very small for the type of application, if you have some time, I bet it would be really interesting to take a look at it.
If you ever had to work on a project where the performance of your application is a big issue, i guess you know about the Yahoo Best Practices article. It is a really good article, definitely you will find something useful on it, also you will find other things that in theory sounds really good but on a real application is not that simple to do for the amount of work that it means. The news is that they released a new set of rules that sound really interesting and you might want to take a look at. Some of them are things that we all know we should do, is just that if there is no rule about it, not everybody follow it, like pre-loading and post-loading, or the problem of having too many DOM elements. Another one really interesting is the Split Components Across Domains, for example this means that you should try to load resources from different domains because IE only open two connections per host, so if you point some javascript files to www.myweb.com and the other set of files to www.sub.myweb.com IE, you will be able to load 4 files at the same time. This one seems to be really interesting but is not as easy as sounds on a big enterprise application but is OK for a website. Take a look at the link to get more information about it.
Today I was reading an article about UI Design, and I dont know how I ended up on this website and this guy, Nadeem Shabir is making making really good points about why generally “we think” that programmers are bad at user interface designers. Basically I share with him one point, that I explained on my previous post: Is not that programmers are not good at UI Design, at least not all of them, there might be some really good UI Designers behind those lines of code, but is just not their job to make the application look good, their job is to code it well, with nice and clean code, meeting the requirements given to them, their concentration is on the mechanics of the application, not in a UI design. I only disagree with him on one thing: I agree that they have to be taught the importance of User Interface Design and User Interaction Design, but I don’t think developers should be encouraged to learn about it, I think this is a specialized skill and even though some of them might be capable to do it, is not their job “unless” is a small project where you cant afford a UI Expert.
This work has to be done for a person that the olny concentration is and has to be making an nice and usable application without thinking about how difficult or easy its going to be, they just have to design the application based on what it is possible keeping in mind the limitations of the chosen technology. So if you are a developer and work on a small/medium size application where there is no UI designer will not hurt you to learn about UI Design and volunteer your self to do the job, I bet you, you will get noticed above the rest of the developers.
Adobe is working on a project that will allow us to run code written in other languages like Java, C and C++ inside the Flash plug-in. We know that ActionScript is the programming language of the Flash Player runtime, so the idea is basically cross-compile the code to ActionScript.
To tell you the truth i don’t know if this will be beneficial or will just become complicated and buggy, but while we get to see the results of this project, is plain to see that the Adobe guys are trying to get closer to all type of developers and is another sign that Flash/Flex technologies are here to stay.
Take a look at this link to read the article.
I am a father, a husband, an amateur photographer and a runner that has been around web applications for many years already, passionate about client technologies, user experience, usability and UI Design. I love to research and learn new stuff, I enjoy to design and work on good looking applications, but I like to go beyond that, acting as a UI Architect, designing the whole client side application, writing frameworks and API’s that will speedup the development phase and application performance. I truly believe that working hard and pay attention to every single detail makes a huge difference and makes an application successful, from serverside connectivity and network packets to a pixel perfect layout.
This website is just to share my thoughts, experiments and things that I find interesting on the web. A lot of times while researching or reading something we all find very useful stuff, usually I just add it to my bookmarks and then I forget about it, so I got tired of keep looking for the same stuff over and over and I decided to create this blog to store all those interesting links, articles and thoughts to share them with others.
We all know how important the User Interface Design is, technology alone will never get the user acceptance and subsequent marketability. We have to agree on this, that’s the end product, that’s what the user is going to see and they will never know what’s behind that nice or ugly screen that they have in their monitor.
We have seen a lot of good projects fail because the application is ugly, is cumbersome, is not easy to use, or usually the user claims that the previous one was better, the reason? A bad User Interface Design. Usually this happens for two reasons, one is because a lot of people do not take the UI seriously, we always hear people saying that UI Design is just picking a nice color and anybody can do that, let me tell you something, it is not. And the other reason is because the lack of real UI Designers. Some years ago when applications were just flat, plain HTML it was OK to do the design on HTML , PowerPoint or even just on a peace of paper, but not any more.
I have seen a “UI designers” that the only thing they do, is pick nice colors and use a little bit of common sense and if this is your case, its time to start looking for technology books and help to build a good looking, useful and easy to use applications, exploiting all the current technology advantages and help the UI designers the credit they deserve, instead of just keep looking at that nice, thin and cool Mac. If you think you job is just make the application look good, please change your title and go back to build good looking websites.
Building applications is not the same as building websites, when you build a website you just need your HTML editor, Photoshop or whatever you use, plus good taste, that’s it. Currently you don’t even need to know HTML, I have seen people working on UI that the only think they know is drag, drop and right click, you don’t know anything about how powerful or powerless the browser is.
Thanks to how technology has changed during the last few years, to be a User Interface Designer, Interaction Designer or a User Interface Architect, you need a lot more than that good taste, nice cloths an IPhone and the coolest Mac. Web applications are way more powerful, they are not static any more, we have AJAX, .NET, Flex, etc. and if you just said AJAX? Flex? and you dont know anything about , there is no way you can design a application exploding current technologies, making available useful features to the end user, and at the end your application will look like an application from the 80’s.
For example if you are working on an application that manages customer information, and you have to design a screen to create a customer. Before you used to talk to the customer, business analyst and user to build the persona, then create a HTML mockup, a document, then try to get the approval, etc, etc.. Then the developer would use that mockup to build the screen, there was nothing that the developer could do to mess it up, but now, let’s assume that the technology is JSF with Ajax support, where listboxes can get loaded without submitting the page, or make an Ajax call to return HTML and replace just a peace of the page, use some advance techniques to hide show content, etc. I am not saying that a UI designer needs to know how to do it, but YOU NEED TO KNOW WHAT IS POSSIBLE FROM THE TECHNOLGY PROSPECTIVE, because if you don’t make that as part of your design, believe me, the developer will not make that decision for you, do you really think a regular jsp developer will say?, “you know what? After loading the header of the Customer, I will disappear only the detail part of it and using AJAX I will bring th rest of information and hide this other one to make it user friendly ”, the answer is no, they will not do it, because they thats not their job, its yours as UI designer, you have to know how far you can reach to be able to make those decisions. Or if the application is using Flex, and you don’t define when to use, fades, transitions, effects, etc, the developer will not do it, thats why you need to know about the technology, otherwise let me tell you that your applications will be another one that we will see going down.








