Friday, March 26, 2010

Organization Budget and Finance

It was about a year ago when I started working on my Student Council Attendance tool for Speed School Student Council. This tool was designed to solve the problem of accurately tracking member attendance and make my job as DoA easier. After successfully putting this tool into use, I was ready for my next challenge. The next item on my list was creating a way to transparently track our council's budget including how we spend our money. I ended up spending the majority of my spring break this year working on my newest open source PHP tool, Organization Budget and Finance.



This is my first web based application that I designed in such a way that it could very easily be used by other groups or individuals. The design takes into account no special considerations from SSSC and simply attempts to fill a very specific need. This application is not designed to be a complete financial tool or even be used to balance a budget or an account. I am hopeful that someone will come across this tool and find a use for it.

This tool is used for allocating funds and tracking receipts for specific line items. I have implemented almost all of the major features and hope to have our new DoF put this tool into use very soon. The tool is based around the concept of a line item. This is a budgetary item that can have any number of sub line items. This can go as many levels deep as desired or necessary. This essentially creates a tree structure which represents the budget itself. The top level is designed to be used for each years budget. The next level will be used for all of the major events or funded items. The successive levels provide additional details to how funds are allocated. Multiple funding sources can be allocated to each line item. Any number of receipts can also associated with line items and represent money spent. There is not direct connection between the funds and the receipts meaning the allocated funds are treated as essentially one pile of money that receipts deduct from.

The design approach for this tool was to keep it as simple as possible, specifically with respect to the database. However, some interesting features have been built on top of this core set of information. Receipts, sources, and line item's can be made private. The reason for this is that not all information should be made publicly available, at least initially. The obvious use of this feature would be hiding items that are not yet finalized, such as next year's budget, or hiding receipts that have not cleared the account yet or the amount has not been confirmed.

Other features include the ability search the database for specific receipts or line items. This will especially be useful when trying to find out how much was spent on something from a previous year. The budget pages use custom CSS formating which allows for easy printing and avoids all of the fancy styling that is part of the web site. Lastly, the entire database can be easily downloaded in a single click as an XML file for easy backup and data portability.

Why put in all of this work for this tool? In the end it boils down to transparency. I strongly believe that SSSC will benefit from more transparency. It starts with having this tool being open source and ends with our budget being available for anyone to look at. In the end, not many people will care how much we spent on pizza at Fall Festival or how much the E-Expo name tags cost for all of the council members. However, certain council members will care about this information and having an accurate record is priceless.

Our historical records with respect to finances have mostly been lost to time. The real judge of my success will be time. What will the state of these records be 10 years from now? Hopefully I remember to look back and see if I was successful.

Thursday, March 18, 2010

Becoming an Open Source Developer

I have been writing computer programs for a very long time. My first experience was writing Logo programs when I was in elementary school. I have come a long way since then. In high school I began programming in PHP and was able to make functional applications. In college, as a Computer Engineering & Computer science student, I have completed a wide variety of programming projects, but only recently have I started releasing my code open source.


Right now I have 6 projects that I have started and are hosted on Google Code. A list of all my projects are listed on my website under open source projects. Three of these projects are written in C# and three of them are PHP web applications. Two of them are school projects that I worked on with other classmates.

Why do I release my code open source? There are two main reasons. The first reason is that using Google Code provides a Subversion server for storing code, a bug tracker, and wiki for documentation. The second reason is there is no benefit keeping the code closed source. Releasing the code open source maximizes the possible benefit of the code that I write. In some cases this is by simply making the application available for others to use but in other cases the actual source code could be used and extended by other individuals in the future. Additionally, I hope by making these projects open source they may live on past the time where I can focus on their development.

At this point in time in my career as a programmer, my skill set and reputation are the most important assets I can focus on improving. Any possible monetary benefit of keeping the code I write closed source is offset by the benefits involved in contributing to the open source community. One of the website I have recently discovered is Ohloh, where I promptly created a profile (https://www.ohloh.net/accounts/JaredHatfield) that includes all of my contributions to the open source projects.

Up to this point I have only contributed to open source projects that I have started. However, I want to start contributing to other projects, at least in a small way. However, the projects I am interested in use Git and I am still in the process of learning how to use Git effectively. I will admit that I am partial to Subversion and really like using Google Code. Using Git has been frustrating on Windows, but once I get the time I will start expanding my contributions.

No matter what my future holds for me, I know that developing open source code will be something I continue to do.

Monday, March 8, 2010

NAESC 2010 Best Website: http://speedcouncil.org

Every now and then the hard work that I do gets recognized. I was not able to attend this year's NAESC National conference in Austin Texas, but I did apply for the best publication / website. As it turns out, we won! So I don't have to explain everything, here is our application we turned in to the conference:

1. Describe the publication or web site's purpose, audience, and design.

The Speed School Student Council website serves as the main public face for the council. The main components for the website include individual member history, a list of events and descriptions, a calendar of events, a photo gallery, and council documents. The website uses the Drupal content management system to provide an easy to use navigation structure for browsing all of the content. A new addition to the website is historical meeting minutes dating back to 1948. These newly digitized records amounting to 1,900 pages of content that are now available. Newly created documents are managed in Google Docs and embedded directly in the website. This allows for easy collaboration and a much easier interface for members to modify and update the content.


2. What is the value of the publication or web site?
The biggest innovation of the SSSC website is the attendance records, committees, and achievements. The information displayed on the website is obtained from a web based application called Student Council Attendance (http://code.google.com/p/student-council-attendance/), an open source application developed by a member of SSSC. All of the members of the council are tracked using this system. Attendance at meetings is taken and automatically made available on the website. This includes automated reporting as members fall into bad standing. Committees and their members are also tracked and available on the website. A fun aspect of the website is Council Achievements, which are based off of achievements awarded in video games. Members are awarded achievements for serving on the council and doing various tasks, including attending major events.


3. Please link to a digital copy or image of the publication or the web site.
http://speedcouncil.org


One of our amazing freshman, Jeremy Bozarth, gave a presentation on how we use our website to promote our council and encourage involvement. Our website has a wide number of features that are not present on many other council's websites. While I have not heard all of the details yet, my understanding is the attendance for the presentation was very high and it was an amazing presentation!

Here are the slides from the presentation: