How to Backup and Encrypt your Personal Data

Gone are the days of keeping every document in paper format with files, now electronic storage devices overtook it completely. However importance of the documents is still the same and even increasing with increased complexity of daily life routines and business. So one point which we generally overlook for our personal data (mostly stored on computer hard disk) is to make sure that data is being available even in case of hardware or software failure and moreover it should be safe, and away from malicious hands.

Continuous availability of data is very much important to ensure that your work is being performed on time without any loss due to unavailability of data. However if your data is kept on a single location, there might be a risk that that location may not be available or is not in workable condition due to some problem. So the simple solution, to ensure the availability of data, is to make data available from more than one locations. It means that data should be placed at two ore more locations (depending upon importance of data), and data should be updated on all replication sites within a reasonable time duration. Following it, if any site is not working due to some problem, you can anytime switch to the alternative location and hence can continue your work without much delay. This is a solution to ensure the continuous availability of data and can be fulfilled by scheduled backup. Business Entities uses many commercial software to take the data backup, however, a home user may not need those heavy solutions. There are many free backup software available for home users. One of such tool is 'Comodo Backup', which is free available and is a good software for home users requirements. It provides following facilities:

How to Manage Outsourced Project

This is in  continuation of our last Article on 'How to Choose the Outsourcing Partner'. Now once you are done with selecting a possibly right outsourcing partner for your business,  next important step is to manage the outsourced project. Outsourcing the project does not mean that you  are free from the management related aspects. It only means that you need not to hire the resources on your  payroll and you can consider yourself free from long term liabilities of hired resources, and now virtually you can extend your team at any point of time without much efforts at your end. It could be a big mistake to consider yourself free from all project management aspect, and that could result in a bitter taste for outsourcing. So friends, when you outsource the project, you may need to consider it as virtual extension of your team and should continue to participate actively in management or execution. The difference will be that you can use management team of offshore partner as an extension of your management and hence can delegate some of the responsibilities. Of-course the level of involvement may vary from one scenario to other. This is one of the important point to consider. Further, here are few points which may help you to get a good result from outsourced project:

  1. Take it as Virtual Extension of your Team - Consider that offshore team as an virtual extension of your in-house team. This consideration should not only be in term of output expectations but also in 

How to Choose the Outsourcing Partner

This is in continuation of last article on 'When should We Outsource the Work'. After deciding that we need to outsource the work, next big question is, where we should outsource the work. In this article, we are discussing few key points for selecting the outsourcing partner.

Selecting a right outsourcing partner is very important to justify your decision to outsource. A good choice can help you achieve your strategic goals and operational planning, however a bad choice can ruin all the planning and sometime the scope to outsource in future. So companies should spend good quality time on researching, and selecting the right partner. Here are few points which can help in deciding the approach to find the outsource partner.

  1. Matching Skills - Look for a company which has good experience in the technology and domain required for your project. Here technology and domain both are important. You will find many companies which can claim to do any kind of project. However experience in particular skills and domain always matter. Moreover management also grow stronger as it gets experience in same kind of projects. So always check the portfolio of company to sort out the matching projects. Have an

When should We Outsource the Work

Outsourcing the work and choosing an outsourcing partner is an important decision. Here we should be clear why are we doing the outsourcing. The first point generally comes in mind is that outsourcing is done to save the money by outsourcing the work to some company which can do it cheaper. However, this is not the first motive of outsourcing. Outsourcing is/should be done for strategic benefits keeping in mind the strategic directions of Organization goals. Here are few points explaining these factors:
  • When we don't have required expertise- It is a good idea to outsource the work when we don't have the required expertise. Then outsourcing to a right partner, who has the required expertise in that specific field, can help a lot. Otherwise, we shall be investing a lot in learning new skills and keep on building the expertise for that domain which may not be useful in longer term as per the strategic direction. Moreover, we are not sure that how good we shall be able to perform in initial days of learning. That can cost us our valuable time along with investment of money and still may result in loosing the opportunity window due to delay in achieving the right level of expertise. So outsourcing is useful when we find some tasks which is not in line of our strategy and skill building is demanding a good amount of investment. Here outsourcing that piece of work to a partner which has proven track record in doing that kind of assignment can actually help you to move faster and utilize your time for core activities of your Organization.

How to Manage Your Productivity

When we are talking about productivity, the first thing we need to be clear is that, the productivity is about the outcome, about achieving the goals. It is not about spending the time and putting more and more efforts. More efforts and time can only bring the sympathy to anybody, however productivity is measured directly by the outcome of efforts. So what matters is, what you have achieved, how good are you meeting the expectations and delivering the results for your team, and for your Organization.

Many of the times, amount of time spent for the work is considered to have a direct impact on the outcome. Executives used to be in a mental trap to work for long extended hours in the evening as a responsible team members to meet their goals and to add more to their outcome. But does that really improve the productivity? Burning the midnight oil at the time of delivery or in some critical situations is understandable, however can shedding extra hours on daily basis in the office really add to the result?  This is a big question and is an important point where quality of efforts put in, matters over the quantity of hours. And here is the start point to think that how we can add more quality to our work, so that it can result into desired productivity within regular work schedule. Here are the few principles to add to the productivity.
  1. Match the skills with Organizational Needs - Know what you can do best and then match it with the Organizational needs. Every person has some unique set of qualities which make her better in certain areas. Now the need is to match these qualities with the needs of the Organization. So every employee and the immediate boss should work collectivity to identify the Organizational needs and that how these needs can be met in best possible manner by utilizing the skills of employee. Sometime you can be a expert in sales and good in advertising, however, if Organization needs are currently for advertising then best role for you is in Advertising. You can not achieve your best till you are not put the efforts in the direction of Organizational needs.

Exception Handling in Web Applications

Error Handling is an important part of any implementation. An application without Error Handling is like a patient with all door closed for diagnosis. It is a perfect time killer for developers to debug the application issues without proper error handling. Hence it is an important topic to discuss. However here we are concentrating more on error handling in web applications (using JSP, Servlets).

Motive of error handling is to capture any error generated in the application, log it to any logging system and propagate it to right point so that it can be directed to the user with all useful information. So the basic flow of error handling should be
  • Apply try-catch block with right exception type in catch around the code which may generate the error
  • Log the error using any logging mechanism. One of the popular logging system is log4j using commons logging. Ensure to use right logging level i.e. debug, info, warn, error etc
  • Apply business logic whatever is required to handle the erroneous case as per application requirement
  • If error is not manageable and condition should be propagated to user, throw the appropriate error further after wrapping the original error. Make sure that new exception should carry all user centric details which can help them to understand the cause of error, and developer centric information which can help them to debug the issue. 
  • As a general mechanism, error codes can be set to exception which can describes the reason of problem at Application and UI level. These error codes can also be used to show the localized messages on UI
  • Application Framework should provide the facility to handle any exception originated from the application and redirect it to a designated UI which can show the error details to user with all the details
  • The UI can also have the mechanism which can facilitate the user to log the issue directly in Issue Tracking system or to send email to the support staff with all the details

Implementation of Login and Logout in Web Applications

Login/Logout seems like a simple operation in web application. However small information left behind can give a chance of security breach to hackers. Here is a simple and minimal workflow which we should ensure while implementing login/logout functionality in web applications.

  • Have a Security Manager on the Gateway which can authenticate and possibly authorize every new request to server. For example, it could be a ServletFilter. 
    • It should authenticate every new request to check whether user is logged in or not. 
    • If yes, does current request URL exists?
    • If yes, does user have rights on current requested URL?
  • If request is passed through Security Manager, the login  manager should do following: 
    • Clean the existing session for all application specific information.
    • Invalidate the session using session.invalidate.
    • If request is for login
      • Check if user exist for given user name and password. 
      • If not, return to right page with message
      • If yes, go ahead
      • Create a new session, for example, request.getSession (true)
      • Fill the session with all application specific information for current user like all UI structure for which current user is authorized.
      • Forward the request to home page of request application or module
    • If request is for logout
      • Forward the request to logout message page  
This is the minimal workflow to ensure the basic principles, however a lot can be added to implement the application specific security checks and to support the application structure. Like as an extension, the Security Filter which is sitting at gateway can interact with a security service to validate the current request for authentication and authorization. Similarly Login/Logout implementation can interact with Security Service to authenticate the login information and later to retrieve the user specific application settings, for example, the menu structure and UI look etc. 

This brief information may help in concept building and in basic architecture design.

How to use XDoclet and Ant to Generate Hibernate Mapping and Configuration

XDoclet is a wonderful tool to generate various kind of configuration files in declarative way, and the declaration can be done with java code. It allows Java Developers to work in Java Code files only even for all the configuration which otherwise need to be defined in XML or property files. It is very convenient way for Developers who like to have everything in Code files, and facilitate to do all configuration from same place. It makes the applications easy to maintain, and debug. XDoclet supports tags for various tools like Hibernate, EJB, JMX, JSF, and Spring etc. However here we are explaining how to use it with Hibernate. XDoclet can be used for various purposes with Hibernate, like, to generate Hibernate Mapping Files, to generate Hibernate Configuration File, and to Generate/Update the schema.

Before going into details, you should be aware that there are two active versions of XDoclet, version 1 and version 2. Difficulty is that these two versions do not seem to be in Sync. Like version 2 has many changes which are not compatible with version 1 and also has a lot of changes in API. Another problem is that it is not easy to find a good documentation for XDoclet 2, and details like the difference between version 1 and 2. We were unable to find any single document which can provide all of these information nicely, and the path to update from version 1 to 2 with all side effects and changes required. There are many changes in XDoclet tags for Hibernate in version 1 and 2. Many of old tags are not supported now. Same difference is there in ANT tasks also, which can be used to integrate the XDoclet features with ANT. Here we are taking a real life scenario for using XDoclet task in ANT for Hibernate.

Suppose, there are multiple projects dependent on one or other project for Data Objects. One project has all Global Data objects like Address, City, Country etc. Other project has some business function specific data like Employee, Supplier etc. Now Employee has a field of Address type also, which will of course be coming from Global Data Project.

Should Project Manager Apologize if Project Failure is Due to Resources Being Managed by Anyone Else

Answer is with statement "Project Managers should be proactive and not reactive!". Project manager has the ultimate responsibility for the failure or success of project. To answer the original question, certainly project manager should apologize for the failure to meet the target. There is nothing wrong in accepting the failure and inherent responsibility. However important thing is to analyze the reason of failure and make everyone aware about the facts including the other managers, who were influencing the resources responsible for failure. It is not about directing the blame to those managers, but to make everyone aware that what was the reason of failure; so that these can be avoided further. Stakeholders should be aware about the reasons so that they can direct the team members to take corrective action. Other managers may not be having all knowledge to understand the effect of his management, so sharing the facts is always important.

Important thing is that main responsibility lies with Project Manager role is to make the project a successful venture. So one should always ask himself, that, "What is Good for Project". This is like a Panacea in any situation. It will give him right answer for every difficult situation, will keep him away from politics and will enable him to be proactive.

Further, being proactive is important for management. If project manager is aware that some part of the project is not going well, she should inform all concerned stakeholder about the situation, possible effects and various solutions. Project Manager should be very clear that she is responsible for success or failure of project. So she should have absolute control over the resources, their schedule and their performance. She should be proactive to ask for the control, if it is required for the project success. If this kind of control is not there due to a specific management style in Organization, then the control flow and hence the responsibilities should be defined clearly accordingly; and Project Manager should communicate every deviation from desired path to the concerned stakeholders with possible solutions

Redmine Java Connector 0.7 Released

We are happy to announce the first release of Redmine Java Connector (RedmineJConnector) at http://code.google.com/p/redmine-jconnector/. It is a Java based client side API for Redmine.

The product is born out of necessity. We were desperate for a Java based Redmine Client library which can help us to interact with Redmine from our projects. The use case was to help the users to create an issue in Redmine System in case there is any bug or feature request. However we were not able to find any library matching to such requirements. So this product is the result of this requirement, and now we are using it with our projects also.


Redmine Java Connector is capable to interact with Redmine(http://www.redmine.org/) Server using its Rest API. Redmine provides API for various CRUD operations on Projects, Issues, and Users etc. This connector helps to interact with this API using Java based Connector API, without going into details of Redmine Rest API.

System picks its various configuration like Server Address, and Security Key etc from configuration file. Its build is based on ANT.

Sample Code: You can find the sample code with Test Case
Documentation: Run the build with 'javadoc' target, and you will get the documentation in 'javadocs' folder

Various dependencies are:
  • Redmine - Version 1.1.0 or above
  • ANT - For building the application
  • JIBX - For Java to XML and XML to Java conversion
  • Restlet - For accessing Rest API of Redmine
  • Commons Logging and Log4J - For Logging purpose
  • Junit - For test cases
System is developed on Java, hence should be able to run on all platforms. However it is tested on Windows environment with Java 6.

The system is under active development, and more features will be added soon.