Vitaly's WebLog
Software development, startups, marketing

Isolating UI from Middle Tier

October 20, 2008

 

One, if not the main, principle of the good architecture is its openness against 'possible' changes. It can be viewed on different abstraction levels - some classes can be open for some changes in business logic, entire layers may be designed to be open for global changes like switching to another DB engine. As OCP states, entities should be open for extension, but not for modification. This means that your architecture should support its extension in planned ways easily without changing much code (you should write new of course). That is why seasoned developer likes to use interfaces here and there :-) And that is what dependency injection is for...

It’s a good practice to build Data Access layer in a way it is not tied to specific database. So if you use SQL server and then decide to use Oracle, you need to write new Data Access classes specific to Oracle and do not need to rewrite entire system. 

I was surprised, but it turns out that you can isolate user interface logic for web project in the same way. 

There are many JavaScript libraries that allow you to build rich Ajax based UI that lives inside your browser. The only what is needed from middle tier is to return data in some simple format (JSON, XML). So you can plan your architecture for a possible change of middle tier (ASP.NET to JSP?) if you need to. A good example of rich UI JavaScript library is ExtJS. I recommend taking look at it if you did not do that yet.

 

 

 

 

 

 

 

 

 


PicLens - Good example of zoomable 3D UI

April 16, 2008
If you did not see PicLens, I strongly suggest taking a look at it. This is free add-on for your browser that will add rich and interactive UI for a number of web sites that host images and video. I've just downloaded it and played a bit with it. It looks just great!

A good example of the bad software: Adobe Updater

December 5, 2007

I just cannot stand from posting this example of incredibly lame default behavior. And It is exposed by the software of the distinguished brand.

Once, I noticed small white rectangle in the notification area. The icon looked like unfinished one. What was my astonishment when I found that that was Adobe Updater. And what was my indignation when I found that it already downloaded more than 100 Mb. Isn't is a bad tone to silently consume user's resources that may cost him money?

I get caught on this each time I reinstall Adobe Products or Install new version. It seems that they have added this in Creative Suite 2, but I may be wrong.

Here is the list of things I found to be wrong with Adobe Updater:

  • Incredibly lame UX that you presented with when you want to turn-off updates (see below)
  • Changes in updater preferences are not shared among users on the same machine. If updates made to the executables that are shared among the users, then why not to share these preferences between them? This point is controversial, though, I know.
  • When testing this, I logged in to my machine using remote desktop with second user account. And I found that when one user have any of updater windows opened, another one receives no reaction when he clicks on Help/Check for Updates
  • Updates are enabled by default and are downloaded silently, the only visible clue is unintelligible icon in notification area.

Adobe Updater Icon

To disable automatic updates you need to follow the next steps:

  1. Go to Help menu. Why I should go to Help menu to run off automatic updates, shouldn't it be somewhere in Preferences
  2. Click on Check for Updates. It will open the following screen. It is pretty straightforward that you should check for updates in order to turn them off, right?
        Adobe Checking For Updates    
  3. After it has checked for updates you are finally presented with the following window with a link to Adobe Updater Preferences form.
        Adobe Updates Summary
  4. Here are defaults set by Adobe
        Adobe Updater Preferences
  5. After you click OK (or hit esc) you are lopped back to.... to the step 2 with update check window. If I just disabled updates, why they check them for me?
  6. And to escape from this vicious circle you should click on Cancel while adobe is checking for updates.

 

Shame on you, Adobe!


Is it time for software developers to master in graphic design?

November 6, 2007

UI is important because it affects the feelings, the emotions, and the mood of your users.

Joel Spolsky

Graphic design of user interface becomes more important in todays applications than ever. It is obvious that software vendors experience increasing expectations on how their applications look. Good graphic design is traditionally thought as a need for public web sites, games and this kind of software, for which it is important to make good impression to a user from the first sight, to keep him/her using this software. And what is interesting, it also becomes important for applications that are used day to day, where graphic design played not so important role traditionally. Users chose such applications for their functionality not for design. But, as we all know, competition is increasing dramatically in software industry, and that seems leading to higher standards that include good graphic design. So, it is one of the branches of software evolution.

Windows 3.11 User Interface

Windows 3.11

Windows Vista User Interface

Windows Vista

Although all above written concerns not only graphic design of software applications, but also user experience, I will focus on graphic design mainly in this post.

For some reasons, there are people that see good design and that do not see it. It is another topic why that happens and why it is important to have good graphic design even for people that do not see it. Unfortunately, the number of such people among software developers is quite high. The more a one is technically oriented the less likely he has good taste in graphics. You may notice that there are graphic designers for such kind of tasks. That is right. But, unfortunately, is not possible (or not effective) always. Firstly, there are tasks may be done without graphic designer if software developers has some understanding of how to do it nice, and that is pretty easy to obtain such skill even for a non-design guy. Second, is that for some projects it is not effective to have graphic designer working on project because "junction point" with developers may be not too smooth.

Software giants that create new technologies also push developers to master graphic design basics. How many of hardcore C++ programmers of twenty century knew what a color gradient is? Now it is one of the basic parts of UI design in WPF. We also see that the gap between development tools and graphic design tools is reducing; this is clearly seen in Expressions Blend or in Flash.

So, it all leads me to a belief that it is a time for a good software developer to think about obtaining some graphic design skills. It may become a must in a mainstream programming, if it is not yet. I'm seriously thinking that I should start asking questions on this topic on interviews, when we are screening potential employees for our company.

Some advices for software developers at last:

  1. Do not forget about graphic design of your app. Graphic design is a necessary part, as well as validation logic, for example, or error handling. It may be simple design. Just select several colors that suit each other end use them all over the app. The easiest is to use analogous colors – different tones of the same color. Or you may learn technique of selecting color combination on color wheel. Or just use ready color palettes that you easily may find in google. Do not forget about icons. It is very hard to draw own icon, but, fortunately, there is lot of free ones on web, so spend some time searching and selecting good icons.
  2. Read a good book on user interface and graphic design. It worth investing you time in reading some of such books.
  3. Do not forget about user experience. Read Microsoft UX guidelines if you did not do this yet.
  4. Do not forget about installer and splash screen. This is face of you app and must look attractive.