Sunday, August 30, 2009

Free software to maintain finances.



I chose to test an open source software(OSS) from sourceforge.net called Virtual Cache. It is a java based program offered for free on sourceforge to be downloaded. What you get from the download is an .exe file that installs the program Virtual Cache onto your system and runs a small GUI in order to interact with the user. The main purpose of Virtual Cache is to maintain financial records and transactions of funds. The user enters the date, amount of money, and an explanation. All this data is stored in a database that is password protected.
This is the download page(http://sourceforge.net/projects/virtualcache/)
This is the main site(http://virtualcache.sourceforge.net/)

The three Prime Directives for Open Source Software Engineering

1. The system successfully accomplishes a useful task.

This program keeps a track of all monetary transactions that you as the user input, does the arithmetic and shows you the current balance. The main strength in this software is in it's simplicity. There are not that many factors to calculate. I like that you are able to just input a few bits of data to maintain a personal and somewhat secure balance of your assets. The password protection is what makes it actually worthwhile, compared to a regular excel sheet. Virtual Cache is pretty useful.

2. An external user can successfully install and use the system.

The installation is relatively easy. The .exe file walks you through the regular process and then you just start up the program. The GUI has flaws however. I found it very confusing that when I started it up for the first time or the second time, it did not have a startup sequence. It instead relied on the user to create a new database and password, which was not too rigorous, but still required more studying of the program. It would be nice to have a small introductory questionnaire that sets you up with a database right after you start-up the program for the first time. After some determination the program works and runs smoothly enough to compute your balance.

3. An external developer can successfully understand and enhance the system.

The one big fault with this program is that the source codes are not offered on the summary page of the side. In order to download the source code, you have to download it from another server. This is a major weakness in their execution. I find it really aggravating to have to go through so much just to look at their code. There is no documentation either. This makes the third criteria for the prime directives unmet.

So..
I find this piece of software very useful, but it is also very limited. It's potential to grow is limited. With such a simplistic structure architecture it remains easy to use, but if it becomes too complicated I think it'll be a bother to just turn on. The trouble in accessing the source codes will also be a hindrance. I would not pay for this software.

Basics of Java and getting back into programming.

Programming is just any other skill that you learn. It can be forgotten. I was asked to write a simple program called the fizzbuzz program. According to my professor, he had read an article in which this program was used as test during a job interview. Link. What was surprising was that the articles says that a majority of computer science graduates are incapable of doing this or they take an extraordinary amount of time to solve this problem.


What the fizzbuzz problem asks for is to print a number from 1-100 or whatever the range. Whenever there is a multiple of 3, the word fizz would be printed in it's place. Whenever there is a multiple of 5, the word buzz would be printed instead. And the third condition is that whenever there is a number that is the multiple of both 3 and 5, the word fizzbuzz would be printed. Seems simple right? I tried it out for myself as well. Here's the code in Java:

public class fizzbuzz {
    public static void main(String[] args) {
         for(int i = 1; i<= 100; i++){
                 if(i%15==0){
                     System.out.println("fizzbuzz");
                 }
                else if(i%3==0){
                     System.out.println("fizz");
                 }
                 else if(i%5==0){
                     System.out.println("buzz");
                 }
                 else{
                     System.out.println(i);
                 }
             }
        }
}

This program took about 3 minutes to implement, counting start-up time for my eclipse editor and compiling. Although it was easy because I knew what I needed to do already, it still took some time to figure out the mechanics. The very first time I tried this, it more than 5 minutes because I had not programmed in java for quite awhile, not to mention the programs associated with the installation of Java and using an IDE. I think that is one of the major problems with those cs graduates. Programming requires practice, and quoting a cliché, "if you don't use it, you lose it."

This fizzbuzz program is not a complex program at all to implement. What I think cs graduates and programmers have to realize is that, programming needs to be viewed as being as important as doing simple math or knowing how to speak English. It's the basis for their career and if that's not up to par, they're at a disadvantage.

The basics are the fundamental to software engineering. Being able to write up this fizzbuzz program brought me back to reality about what I need to know. This experience has taught me that quality programming may be a goal for software engineering, but you need to know how to program first.