It has been awhile since we started our discussion on being "Green" and the need to monitor and analyze our own energy usage. We have been busy learning to use the WattDepot energy data collection system. And we have began rolling out our own command line tool using that system: the Hale Aloha dorm energy data command line tool.
This is a pretty neat tool, allowing the user to gain access to the energy data without the need to learn to program! Our goal was to make the tool modular and extendable. We defined a Command interface for which all current and future command additions could implement. With this standard interface, any new commands can be added to the system without changing any other parts of the system, such as the command Processor and Manager. This is made possible by the on-the-fly, run-time discovery approach used by the command Manager to discover new commands implementing the Command interface. You can try it out: add a new command and see it appear as a new option in the program!
We have learned quite a few new development techniques since last. We learn to use the "Issues" tab on Google project to drive our design effort. The term they use for this approach is "Issue Driven Project Management". There were two other members in our TNT group: Ted and Josh. We work really well together as a team thanks to this approach!
Another cool addition we picked up along the way was Jenkins! No, Jenkins was not our butler! But he sure kept us honest. Whenever one of us submit a code that's poorly tested, Jenkins would know and point it out right away! You will get a big red dot in your build history, and reminded in your mail box that you screwed up! No, Jenkins was not mean. Rather, he gave each of us a chance at redemption before the rest of the team finds out! The best thing a team could expect from Jenkins is his weather report: sunny if the last 5 consecutive builds has no error, cloudy and stormy otherwise.
I have had a very positive experience with this project development techniques that I am adapting it for my other projects. However, since my other project cannot be open-sourced yet, I had to look for replacement tools. I found trac for issue tracking, and bitten for Jenkins' continuous integration.