[font=“Tahoma”][size=1]
[quote]determined
adjective
…
3. devoting full strength and concentrated attention to;
…
5. strongly motivated to succeed[/quote]
www.dictionary.com
[/font][/size]
[font=“Tahoma”][size=2]
I would like to start this topic to discuss advances in web applications design.
Lot's of things happening in this area now and it is very hard not to become lost -
- many PHP frameworks evolved
(PHP section) - JavaScript frameworks
(PHP section) - Google Code
(PHP section)
etc.
It takes some time before you start asking yourself questions - what we do, why we do it this way and what are the other ways to do it?
First, let me to define 'web applications' as I understand them now. Web application (as at today()
) - is a system which works via internet (browser-client –> web server - server) and carries complicated business logic.
Internet Banking, Amazon and EBay interfaces as retail customers (buyers) see them are not considered as web applications by me.
These systems (with functionality they provide) are perfectly fine delivered by browser - anybody can reach these services via any major browser. Some minor issues and browser inconveniences (as I call them) can be resolved by professional developers. They have relatively few data entry screens and most of the things they do - display us structured content. Browser evolved as a tool for browsing content.
These days browser is used more and more as a delivery framework for complex intranet and internet applications. There is a lot of excitement about it. If you look at PHP section - you will see that they call themselves ‘proven leader in on-demand customer relationship management ‘. After I discovered some problems on my system I decided to have a look how they handle such situations. Guess what? They do NOT handle it at all.
Want to know what was checked?
1. Loaded account details to edit in two different browser windows. First user changed record and saved it. Second user did not change record and saved it after first record.
Result - second user overwrote first user changes unintentionally
Correct result - second user should get a message that record was changed after he loaded it for editing and provided interface to merge his changes into updated record (merge) if necessary.
2. Quite common schema while working with data entry to forms is.
(x) Data entry page -> (y) Confirmation page -> [(z) Details page]
(x) Form - data entry has buttons ‘Save’ and ‘Preview’
(y) Confirmation page - displays data as text (without form elements) to let user to check entered data. Has buttons ‘Back’ and ‘Save’
(z) - display data which were inserted and extracted back from database. This step is sometimes omitted.
There is a tendency - users spot a mistake at a moment they hit ‘Save’ button on Confirmation page. They hit ‘Back’ and do not realize that data were already added to database. Than they correct errors and trying to Save again.
Result - Salesforce application went to indefinite loop. Data can not be saved but there is no any error message to a user similar to “Record already exists!”
Correct result - after first submission all events from same page should be blocked by JavaScript to eliminate any activity from this page.
Nobody is perfect. Just proves how hard sometimes to code business apps in browser and it is under looked even by big companies.
Look at a picture below. This is well known YahooMail. If you open any mail in Send folder (shown) you can see HREF ‘Add to Address Book’ next to …. From email address. Does it make sense? Won’t it be your own email address and does it make sense to add yourself to address book?
[center][/center]
[color=“#483D8B”][center]Fig 1 Natural position for 'Add to Address Book'[/center]
What were major driving factors of using web for developing enterprise applications? Most common ones I have heard of are rapid development and easy deployment. It appeals as a perfect tool to replace company’s shared Excel files and Access databases - merging data to enterprise data storages away from complexities of managing many single files and databases.
But, as experienced developers, we know that there is no way to get Yin without Yang.
On a Yang side we have most of the logic located on server side and with super processor and Gb’s of memory we have to wait server response, isolation from OS - no access to local file system, Forward/Back buttons - browser navigation conflicts with application logic, differences in browser functionality in a combination OS-Browser, no way to work offline to at least preserve data while network is not available.
May be for future projects I will reconsider technology choice - at the end of the day we have Eclipse and PHP section and I am sure you know many more successful cross platform applications. I agree that Java is not perfect but in comparison with .Net it gives a feel of freedom which any developer likes :).
In my situation we already wrote hundreds of thousands of lines in PHP. To overcome browser inconveniences I started thinking of putting a browser inside a box which will allow developing in HTML and JavaScript on one side and will allow removing browser navigation and intercepting events before browser will see them. I found .Net WebControl and I thought I can sacrifice support OS-Browser in favor to .Net and IE. It is like you will say that Matrix backend supported on .Net and IE (Windows) only. I develop corporate applications and I do not consider it as a big disadvantage as majority of corporate desktops have unified setups read Windows/IE combination.
I found simple VBasic application which uses Microsoft WebControl and asked my developers to remove from it all navigation and leave only frame (I called it IENude project) and add functionality to read XML file with URL of web application server and web application name.
When we launch it we will see only web page ina frame. This frame will have our application name instead of Form1 shown on a screenshot.
I am sorry for typos inside screenshot - was typing it at 2 am.
[center][/center]
[color=“#483D8B”][center]Fig 2 Night wish[/center][/color]
I though finally I can get rid of ugly URL’s IE7 shows on each and every page, can ping web server and tell customer speed and network availability from my IENude, I can now replace ‘Page can not be displayed’ with nice interface to allow user to save typed data locally and provide interface to resubmit later. I have no ‘Back’ and ‘Forward’ buttons, I can easily intercept double clicks or ability to click many buttons on slow networks (problem #2 described above). I can easily filter events to browser and it looks like such filtering process will NOT be business specific. It is all will make it IEImproved for me. I even can ping clients from server to find out who is still online, I can send messages to them and how happy I am!
[center][/center]
[color=“#483D8B”][center]Fig 3 Night wish implementation with Matrix login inside - AIR will be discovered shortly after that[/center][/color]
This week I came across to … Adobe AIR and it reminded me something. They did more than I wanted but nobody forces me to use more than I need (again my finger will not be itching while I type ‘.Net’ any more
) I was a bit skeptical about their push for Flash and Flex before for web application development. I even subscribed for 2 weeks trial of PHP section site which is fully designed using Flash technology and I did not like it. It reminded me times when people used Java applets inside web pages.
As to me these are perfect tools for promotional sites and companies which business is in a design and media/entertainment.
Could it be this time ADOBE get it right?
If you look at PHP section (scroll down to Adobe AIR features) won’t it remind you my IEImproved.
They promise it to be lightweight and cross platform. It uses PHP section as HTML engine. Good thing is - no more OS-browser tests. All logic can still be on a server - we can use AIR browser extension to render HTML and JavaScript to keep AIR application updates to a very minimum.
BTW: application itself can detect if a newer version is available and update itself on startup.
It is still in Beta but potentially I see it as a tool to AIR browser Yang sides and replace my IEImproved.
Would really like to hear what you think. Squiz developers and customers all welcome to discuss or contribute here.
Thank you,
Igor
[/size][/font]

