Wednesday, December 14, 2011

Hale Aloha CLI Part 2: Rise of the Hash (Version 2.0)

In my previous post I investigated the inner workings of the Hale-Aloha-CLI-Hash project, answering the question of whether it successfully accomplished all of the Three Prime Directives of Java-based open source software engineering. If you are just tuning in, you are more than welcome to read my previous blog, but I am certain you will see that the system that I reviewed, surely, was a good system that did satisfy the directives.

However this time, by some odd stroke of fate, I was given the opportunity to be just one,amongst a group of my peers (actually, the same group as in my post on IDPM through teamwork on Hale-Aloha-CLI-Chair) of the project's developers that expanded upon the previous system by building in new functionalities. Working with not only my team members but also an unfamiliar territory (since being a new developer to the project, I was not well adjusted to the previous group of developers' coding strategies) we were to add commands such as:

(1) set-baseline [tower | lounge] [date]
This command defines [date] as the "baseline" day for [tower | lounge]. [date] is an optional argument in YYYY-MM-DD format and defaults to yesterday. When this command is executed, the system should obtain and save the amount of energy used during each of the 24 hours of that day for the given tower or lounge. These 24 values define the baseline power for that tower or lounge for that one hour time interval.

(2) monitor-power [tower | lounge] [interval]
This command prints out a timestamp and the current power for [tower | lounge] every [interval] seconds.

(3) monitor-goal [tower | lounge] goal interval
This command prints out a timestamp, the current power being consumed by the [tower | lounge], and whether or not the lounge is meeting its power conservation goal.

In addition to implementing the above commands, we are also to update any of the guides to reflect the changes, effectively upgrading the system to Hale-Aloha-CLI-Hash V.2.0.

Although my team members and I eventually did get everything up and running, it was not without a few roadblocks along the way.

One of the major issues, as a group, that we ran into, was our favorite friend: communication (or, a serious lack of it). While each of us were responsible for our own individual task, communication was even more strained in this project, with no one, if I can recall correctly, communicating in-depth. That is, until the final week of development emerged and the rate of communication increased more and more, with the highest rate occurring on the last day. While I too played my own part in not communicating more efficiently with my partners, making the necessary developments for the new version of the system became increasingly stressful as well since I had no idea how much progress my partners were making and if they needed any assistance in finishing up their task.

Another major issue we ran into as a group was working with the previous groups' implementation of the command line interface of the system. Now, I am not trying to make the case that their choice of implementation led the project to violate any of the Three Prime Directives, but, for me, their choice was slightly confusing. Simply put, the actual interface of the project did not function in a manner that most would consider to be an interface and, as a result, adding new commands was somewhat complicated. However, after getting used to the way that they implemented their interface, my team members were able to both add and test the new commands.

From the perspective of the Three Prime Directives, I think we did a good job advancing the system. Albeit, it may not be perfect (since there were a few last minute updates to the system like the last time we used teamwork in IDPM), but it successfully satisfies the Three Prime Directives, making it easy for other developers as well to advance it even further. Despite some of the issues we had in development, I really enjoyed working in teams for IDPM, since not only did it help me to understand what my weaknesses are as a programmer, but also my strengths in relation to both my team and the other's team.

No comments:

Post a Comment