Friday, September 11, 2009

An Open Source Semester

This semester I have already expressed that I am swamped with school/work, but so far have been having fun. As a small distraction I have a few interesting facts to share. I have determined that on a weekly basis I will be coding in five programming languages. They are:

  1. PHP for Student Council's Website and any other web code I decide I "need" to write
  2. C# for my CECS 550 project and the DPX software I am developing
  3. Java for my CES 220 class
  4. Assembly language for my ECE 412 class
  5. Objective C for my work on the iPhone
Since I've been having so much fun writing all of this code, source code management has become very important to me this semester. While I haven't set up a private system that I really like for code that I do not want to make publically available, I have started using Google Code for a few of my projects.

At this moment, I have three projects that I am working on that are hosted on Google Code. They are:
  1. DyKnow Panel Extractor
  2. Student Council Attendance
  3. Student Educational Arrangement Tool
There are a few other large pieces of software that I have written that I am thinking about releasing open source. The one that it at the top of my list is my Alien Defense game that I wrote for my object oriented class last fall. While it isn't a very fun game, it is almost complete. At the very least it is playable, just not fun. With a lot of re-factoring and some time dedicated to balancing the game difficulty is needed, it would be a fun game if it was finished.

As for SCM, I have a dedicated computer that I have off site and always running that I have set up CVSNT on. However, I do not know if that is the SCM software I will end up using. SVN is probably a better choice. I have tried using GIT, but the lack of integration into some IDEs have kept me away from it. Since my biggest projects are already in an SVN hosted by Google, I will not be rushing to find a solution for myself.

Even though I have a lot of work to do, I am excited to be contributing to open source projects. While these projects are ones that I have started, in the future I will probably try to find some other projects to contribute to.

Saturday, September 5, 2009

Happy Birthday!

IMG_8332

Does anyone want to translate the ASCII for me?

Speed School Student Council Reboot

I will admit this semester seems a little bit different. Part of it may be the fact I am spread so thin between everything I am doing or it might be the fact I haven't been in classes all year (I've been on co-op). It could be the newly remodeled Duthie Center of Engineering, formerly the Kersey Library, providing a new social space for Speed School Students. Whatever it is, there is a new motivation behind a lot of the work I have been doing these past few weeks.

As for SSSC, planning for E-Expo has already started. It hasn't ramped up yet, but that time will come sooner than anyone will expect. The plans are to have a bigger, better, and more involved E-Expo this year, but everything at the moment is still up in the air. We will see where the pieces fall, but hopefully I will be able to assist in making it an overwhelming success.

As for my involvement on SSSC, I have had this master plan that I hatched shortly after being elected. When I was giving my speech on why I should be chosen for the position, I stated that I wanted to make council more transparent, specifically with attendance records. Well, that is something that is really geeky and might not be the most logical place to start if you want to make an impact on council. However, I had a plan. Let me explain...

In the summer semester when I was on co-op and therefore no homework, spent a few weeks and countless hours developing a system to manage council. My position as Director of Administration means I'm in charge of all records non financial. I had already managed to improve the way the website was updated and organized the meeting minutes into a little better, but I made a promise to fix attendance.

I developed a robust database that was able to hold all of the required information. I then proceeded to code a management interface in PHP that would be used by the DOA, in this case myself, to perform all of the management tasks. This included adding new members, adding meetings, taking attendance at meetings, adding committees, adding members to committees, adding achievements, awarding members with achievements, and updating and deleting the various types of records where appropriate. It was quite a programming feat for one person. I have since open sourced everything and you can find it at http://code.google.com/p/student-council-attendance/

The next step in the process was making all of this information available on council's website. I wrote all of the "reports" that take the information stored in the database and presents it in a nice format. I then wrote a bit of PHP that can bridge the gap between the Drupal CMS used on Council's website and this new PHP web application I developed from scratch. At this point, my master project was complete! http://www.speedcouncil.org

My Plan

Now that the back story is out of the way I can explain my plan. The basic concept is a system of social rewards and punishments. With attendance records being displayed very publicly on the website, those members that fall into bad standing will be highlighted. In contrast, members with perfect attendance are highlighted on the home page. During meeting, attendance is displayed on the projector so everyone can see who is present and who is absent. All of this weights into a social equation that places pressure on members to be more involved.

However, attendance is simply not enough. Members need to know how to be involved. This is where committees come in. Every member is required to serve on a committee. Members who are not serving on a committee are highlighted and in turn may be pressured to join a committee by their peers who are serving in a committee. However, this is mostly a negative social reinforcement and needs to be balanced out.

Achievements provide the strong, but intangible, positive social reinforcement to balance out the other negatives weights in the system. Achievements are simply badges that are displayed on members profile pages. They can be awarded for a variety of tasks that need to be accomplished by council. Members who have earned achievements since the previous council meeting are highlighted for their accomplishments. This allows, at a glance, for anyone to see who is more involved.

While the underlying system is very geeky and complicated, I enjoy my PHP and MySQL craziness, its overall aims are social. The goal is to jump start council involvement. Similar web based efforts have been made in the past, but in my opinion lost track of the social aspects involved in productivity.

This entire system is especially focused on the underclassmen who are only starting to get involved. My hope is to create a sense of transparency in how council operates and instill self pride in members of council and their accomplishments. Time will tell if my effort was worth it and my approach was justified.