Thursday, October 18, 2007

Srushti.Observer

In Flexo, open Expense Manager, double click on existing expense entry from the list, on item edit screen, click the button right next to the Categories drop down control, choose Categories Manager from the pop-up menu and modify category name in resulting pop up window. As soon as you hit save on category update window, you notice new name getting reflected in all screens (Expense Entry screen and all corresponding entries in Expense Manager Screen). This instant update gives visual response to the user that his change has taken place successfully. The hidden performer behind this quick update is Srushti’s component named “Observer”. If you open Flexo directory and scan DLL files with prudence, you will find Srushti.Observer.dll which does this job. Conceptually, this component promptly follows “Publisher-Subscriber Design pattern” to work systematically. The form which receives update information from user hands it over to Srushti.Observer component and this propagates information to other currently opened forms/windows. We are trying to visualize big picture through this implementation. One day, Srushti’s all products will start communicating each other and they may use “Publisher-Subscriber” design for their effective information exchange. Though this idea is only in conceptual stage, our everyday effort is having passion to reach this goal one day.

Tuesday, October 16, 2007

Quick Quest Presentation Hosted Online

Those who don't have MS Power Point installed on their machine and still wish to view Quick Quest Power Point presentation, they can try it here: Quick Quest Presentation

Monday, October 15, 2007

Welcome, Dear Visitor

Now, if you visit www.SrushtiSoft.com, you will see a new “green button” on the products main page with the caption “Visiting for the first time?” which gets you to the newly built web page.
After posting few (in fact 2) articles on CodeProject, my web site hit rate has increased a lot. That pushed me to create a new page which briefly and effectively talks on our goals. I just thought of having a corroborative conversation and make an attempt to induce “Srushti” worm in visitor's thoughts, hoping that one day they may ping us and expect some sort of soft solution(s). Its not a strategy to attract my site visitors, In fact I am trying to provoke their thoughts and match that with our passion.

Srushti.Framework

As soon as I started feeling comfortable with dot net technology my next move was to coming up with range of small utilities that should help and accelerate our daily activities. I just started working towards coming up with generic framework which should be an abstraction to the technical challenges like connecting to multiple database, logging and caching. I built one code generator tool too, which will generate all basic workable classes adhering to the standards laid out in my framework. Soon after finishing the ground work, I put these into production and Flexo came out of it.

Though I was aware of Microsoft Enterprise Library (EL), I dared to workout on my own framework. Reasons were, I wanted to put theory learnt into code and evaluate myself that how good I am in creating generic, scalable and reliable components. After finishing part of Framework, I downloaded Enterprise Library and did a comparision. There were many differences (naturally) and mine required little more maturity (as expected :).

During the construction cycle of framework, I realized many concepts, discovered many possibilities and it helped me to visualize objects and there collaboration rather simply the dot net code. I was able to clearly see design patterns coming to life and sitting in real time scenarios. I admit, I am in very initial stage and have long way to go.

Skin Design

Flexo is a personal accounting package. Since it is in very initial stage, it tracks only your expenses and generates variety of reports on it. (Recently I included income tracking module which is in alpha stage) In coming years Flexo will extend and mechanize most of money management activities under few button clicks. In parallel to cool features, creating a good and ease of user interface is also a head scratching work. It’s an art too. I don’t want to set more expectation saying that Flexo has very good interface but I feel it has got what it was expected to have.

When you download and check all screens in Flexo, one thing you will sure notice, Consistency. Just open any UI guidelines book, this will be a first statement and there is no way to skip this rule in my software too.

If we think traditionally, the design approach for consistent UI for all forms could be like these,

Create header-footer ActiveX/Custom/User control and place it on all forms or create a static class which has a drawing method to decorate runtime loading forms and thinking further to this, maintain one XML configuration file which will hold all coloring, fonts and size details from which our drawing method gets inspired and brushes it on all forms.

In dot net, we have one cool feature - Visual Inheritance, which allows us to create a master form and inherit this to all child forms. Whatever UI changes you make on a master form will affect all its children. Re-using the idea of above mentioned XML configuration file, use dot net App.config and define all fancy information in it. Associate values from app.config file to master form’s properties popularly known as setting dynamic properties and we are done! Whenever I want to change any color of my Flexo forms I will just update flexo.exe.config file and I don’t have to compile my application to reflect new changes.