Tuesday, May 12, 2009

Always room for Improvements and New Lessons

The journey of the Devcathlon Team, the ICS 414 class, has come to an end. Through out the entire semester, the team has been working on a project called the Devcathlon Developer Game. The Devcathlon Game is a game, for developers, based on the sensors used in Hackystat. We have built this game project from the ground up; from researching on what makes a good game, to implementing a working version for all to play. All our research and hard work has finally paid off.


A New Set of Eyes

After finalizing a beta version of the game our professor, Professor Johnson, uploaded it onto a working server for further testing. Having the game run on the server for a few days; I asked my co-workers, Joy Nishida and Bret Ikehara. Both co-workers work at Star Degree as web designers, so they’re input would be good for the game project. Following they’re viewing of the game and me explaining the purpose of the game, they gave me some really good input. Here is a list of things they thought might help improve the game and what I caught what might not be working properly:


  • On the match panel for creating a match and managing a match, it would help if the name of the matches where bold or in a different color text.

  • The match panel in Creating a Match and Match Managing section displays all matches; using pagination to minimize the size of the list, so the user does not have to scroll up and down the screen.

  • It seems that the most developer points section in the Hall of Fame is not working properly.

  • The most team wins section in the Hall of Fame is not working properly; it is displaying all the teams in a match and showing every match in the game.

  • The events in creating and managing a match have not descriptions for them.

  • The match panel in the Manage section should display only matches that the team the user is owner of, is participating in.

  • The win to lose is recording a match where both teams have negative score as loses, but should record the team with the least negative score as a win.

  • When being invited to participate in a match, it would help when the user logs in to notify that user there is an invite for a match; such as how the team invite works.



After reviewing what my co-workers had to say about the game and from what I noticed in the version running on the server; that there is still much more room for improvement. Some of the problems were solved easily, such as making match names stand out; but the other problems, with such so little time left, seemed to far to be fixed. It’s a good thing that this is an open source project, so that other programmer can maybe improve the game or implement the fixes I mentioned earlier.


Obtaining New Knowledge

Working on this project, first as a team leader then later as the project leader, has been a very good experience. Not only did I get to better understanding on how Java works, but also gained good programming habits. Programming habits such as; starting early, meeting dead lines, committing to the project repository often, and keeping testing of the code high. Also from independent researching, I learned how a web page combined with Cascading Style Sheets (CSS) and Java Script can be used to make a web page display and do really cool things.

Aside from learning good programming habits, and understand or learning new computer languages. I also obtained the knowledge to becoming a good leader and colleague. As a leader, I had to lead by example and also guide to the team to success. Its not as easy as it sounds, not every team gets a long easily. The team had its share of problems, from not communicating well to having a big ego. I as a leader had to resolve such issues and provided long term solutions so that the problem would not occur again.

Being a leader has its set back, for me it was the amount of stress it gave me. Some members would not start working on a task till last minute or would not complete a task at all, which made me nervous at times. I would pick up their slack and try to start on the task for them or finish it. Also with the stress accumulating, I would at times lose my nerve and say things to members that might offend them.


Conclusion
This whole experience, of working on the project, has been very good. I got to work with many different types of personalities, each member unique in their way, that it has prepared me for what to come in the future. It has also enlightened my comprehension of programming languages and programming habits. There are many things that I have experienced; but the main one, that seems to be priceless, is being a good leader.

Monday, May 11, 2009

ICS 499: This is just the Beginning

This semester has been a very enlightening one; I was able to work on one of the biggest on going projects in my college career and also obtain life long experiences that will come in handy in the near future. Through out the semester, I have been working on a project called the “Devcathlon Game”; which is an online game for program developers.


On the journey towards completion of the project; I have obtained many valuable new skills and experiences that, I am very sure, will benefit me in the future. Some of the new skills I acquired are; further understandings on Java, new knowledge of how Wicket works and its compatibility with other web designing languages, and learning on how to use and utilize the Yahoo User Interface (YUI). Another skill I came by on is using a new program called Dream Weaver, how it makes web designing easier to do and understand.


An experience I gained from working on the Devcathlon development team is how to be a good programmer. With what the Devcathlon’s events are based, I saw it as a must to practice the principles of those events. The experience, in my opinion that stood out, was learning to be a good leader. During the beginning of the project’s implementation, I served as Team MS’s leader; which consist of Daniel Arakaki, John Ancheta, and John Zhou. Having these three team members, made managing the team easy; because each member did what they were told to do and were dedicated to finishing a task on or before its dead line. I also worked with another person that is apart of the overall development team; Anthony Du, who was the leader of Team UT.


Towards the end, the project leader, John Ancheta, had to step down from his position; due to personal issues. Seeing this as an opportunity to step up, I took the vacated position. Managing three members to managing the whole project, which consist of 7 members, was very difficult. I had to over see both team’s issues, resolve any conflicts between members, and also to implement my part of the program. The experience I gained from being a team leader, a project leader, and picking up leadership in the middle of a project is having good management and self control.


Every project in production has problems; from these problems is where I gained those new skills and experiences. At times some members wouldn’t do their job on time which would slow process of development, so I would either set a concrete deadline or talk to that member. Another situation was when a member of the project was not communicating with the others and made major changes to many files without notifying anyone. A majority of the members in the project had tension towards that member that made changes. I as the leader had to stay neutral, resolve the conflict between the members, and come up with a solution so that the same problem would not occur again.


Being a project member, a team leader, and a project leader has been very educational. I learned on what it takes to be a good leader, to always be open minded to new ideas from others, and to be a dedicated/hard worker. With the new skills and experiences in my pocket and starting a new journey in life, this is just the beginning of things to come.

Sunday, May 3, 2009

ICS 499: Beta versions always have problems

This past week marked the climax peak of the mountain for the Devcathlon development team. We accomplished a majority of the Devcathlon system, from creating a team to a full functional scoreboard. We presented our accomplishment to our professor, Prof. Johnson, and got his approval for a test run.


Following the presentation, the class discussed of what steps to take next. As class leader I proposed the same idea Prof. Johnson had; which was to fix some last minute detailing and have him upload the system to the test server. Later once the Devcathlon is up and running, test some of the functionalities. The class all agreed to the proposal of the next step and also agreed to begin writing the developer and user wiki documentations for the Devcathlon Project Page.


When I received an email from Prof. Johnson that Devcathlon was installed and running; I immediately precede to the test website (Devcathlon Test Server). I quickly logged in and created a team, then waited till the next for the other members of the class to log in and join a team. Once everyone was settled with logging in and there was two teams in the system; I next tried to create a match and “BANG” nothing happened. Of all parts of the system not to function, my part, the creation of matches between teams.


Trying to narrow down the problem was kind of hard with out any console output. I then emailed the professor requesting him to send me what the program was printing out to the console on the server. In his reply, the console output printed that there was an invalid value for the hour field. I had a feeling that it might be the date inputs, due to how I wrote the method to handle those inputs. I wanted the user not have to worry about inputting anything other than a date, month, and a year. The crazy thing is that we, the Devcathlon Development Team, are able to create matches on our local machines.


Over the past few days I rewrote the method that handles the input dates; not to pass in a static 24 hour, but to use the hour the user creates the match. Hopefully that will solve that problem, and no other functional problems will occur down the line. These things are expected to happen, since Devcathlon is still in its beta phase.

Monday, April 20, 2009

ICS 499: It’s not easy being King

For this past week on the Devcathlon journey to success, I was recently appointed leader of the class. Being the leader of the class project is never easy; I was recently the leader for Team MS, which consisted of 4 members including me. Now as the class leader I will be over seeing 7 other people.


Delegating the work

From leading 3 members to 7 members was a real hard job; at first I took it as a good opportunity to step up, and I had planned what and where everyone will be working on. I distributed the tasks and got approvals from the two team leaders, Anthony and Daniel; also everyone acknowledge what they were to do. Since Anthony’s team was mostly finished with they’re part of the system, I decided to pair a member of Anthony’s team with a member in Daniel’s team. So with everyone having a task to complete and everyone teaming with each other, I thought things would get finished faster.


Issues

During the week some issues occurred, mainly the lack of communication. One part was due to a member of the class rewriting parts of a file, which another people were working or dependent on. This cause a lot of conflictions when uploading files that has been worked on into the repository. I tried to solve this dilemma by sending out an email to the class saying, “If you are going to rewrite someone else’s file, please notify that person”, in efforts to have better communication between members. Some people actually followed what the email said to do and some didn’t.


Another problem that happened was when a person broke the Continuous Integration build, that person at times would not fix it right away. The Continuous Integration is like our traffic light; unless that light is green the project can not move along, and if it’s red everyone slows down or stops until it is green again. The last problem that occurred in my first week as the leader was people taking to long on accomplishing something. When I assigned the tasks for members to do, I also assigned an expected time for that task to be accomplished. For things that should only take one night of work, it ended up taking 2 – 3 nights of work. I tried to stay on their backs asking, “When will it be done?” and “We need your stuff working now”. Eventually they got their task done, but behind schedule.


Conclusion

My reign as the leader has been a tough week; not only do I have to worry about my tasks to do, but worry about others finishing their parts as well. I also learned from this past week experience that the team should communicate better, and I highly recommend pair programming; because you have an extra pair of eyes to help you and it’s always good to get a fresh perspective. As the leader one thing I was open to do, was to listen to everyone’s frustrations towards other members in the class. Listening to other’s inputs about other members helps me see who would be best paired up together and what should a person do in the project. The hardest parts for me though, is maintaining a neutral aspect towards everyone in the class; Wow its not easy being the King……

Monday, April 13, 2009

ICS 499: Road to Redemption

After a gruesome past week of our class’s previous implementation of the Devcathlon, we were finally making really good progress. Development started moving along when two members of the class, who were assigned to implement the initialization file, finished and instructed the rest of the class members on how to use that file.


The part of the Devcathlon I am in charge with is the Match Manager, which has the ability to create a match and reconfigure matches already in the system. With the help of initialization file, I was able to retrieve most of the data needed within the system; data such as, teams the user is owner an owner of, the user’s opposing teams, and a list of events related to the match. Everything was moving along fine until I realized that I did not only need a list of events that a match has, but also the list of all the events that are in the system. I haven’t overcome this problem just yet, I have been researching on ways to pull up all the events in the system.


I also saw that in order to create a match, the user must enter an end date for that match. The end date is in a format called the XMLGregorianCalendar; which looks like “1969-07-16T00:00:00”, Year-Month-DateTHour:Minutes:Milliseconds. Having the user to enter a date in that format seems unfriendly; so rather than using the unfriendly format, the user would enter the typical Month/Date/Year format. I haven’t quit figured out yet on the parsing of the end date input, all the approaches I took seem to have crash the system. The simplest way I got it to work was having three different input fields, one for month, one for date, and one for year; but still seemed a little lame having three input fields instead of one.


For this new week of development, I look to solving the list of events problem and the end date problem for a match. I also look to implement a way to retrieve the description of each event and have it display on the web interface. The road to accomplishment seems so far yet so close, but for now this is our road to redemption in the eyes of our client.

A match's configuration page.

Creating a new match page.

Monday, April 6, 2009

ICS 499: What is a leader?

This week on the continuation of the Devcathlon, the teams faced a major reconstruction.  The class leader, John Ancheta, pitched an idea to the team leaders, Anthony Du and I, of concentrating most of our efforts to producing the scoreboard for the Devcathlon.  John explained to us why we should put our efforts on to the scoreboard and temporarily abandon what other members have been working on.  He made a lot of sense and we both agreed to this idea. 

 

I have to say with all members throwing in ideas to improve the look of the scoreboard helped, plus we all saw what parts of the Devcathlon related to each other.  For instance the scoreboard would derive its information from the matches and teams section.  With everyone’s mind set on making the scoreboard, we all lost focus on the true goal for this week’s accomplishment, which was to get real data to display. 


John proposed this idea to our professor, which plays the role of our client, and the result was a “NO”.  With the disapproval of everyone working on the scoreboard, everyone simply continued working on their respective sections.  Through the week, Anthony presented to the class a very good idea of using wicket panels; using this feature would save time in designing new sections of a page and help organize pages better. 

 

Conclusion

I have to say that it’s been a busy week for everyone, especially for the leaders; but that’s no excuse.  We should have been on the ball more, a lot of the work was done late into the week; because of our scoreboard idea wasn’t pitched to our professor earlier.  With the disapproval late into the week not a lot of things were done.  I as a team leader will take the blame, I should have assigned tasks for members to do while we wait for the approval.  All we can do now is pick ourselves up and “Keep moving forward” (Walt Disney).

Monday, March 23, 2009

ICS 499: Wicket, CSS, and JavaScript

This week I finally get to implement all the web features I have been researching and practicing in creating, into the Devcathlon.  Not only do I get to use my web programming knowledge, I also get to practice my leadership skills by becoming the team leader.  I will be leading Team MS, which consist of John Ancheta, John Zhou, and Daniel Arakaki.  Our team will be charged with implementing the Matches and Scoreboard sections of the Devcathlon. 

 

As I mentioned in my earlier blog, that I implemented the Expand and Collapse feature into the Scoreboard Manager section.  A big problem I had when implementing this feature was that the Devcathlon uses wicket, which some people would say is an alternative to JavaScript.  The page, Scoreboard Manager, I am working on is a child of a base page.  So when I was adding in the JavaScript and CSS into the User interface part of the system, I wasn’t sure where to add it; to the base page or to the page I was working on.  So I took a chance and added the files to both pages. 

  

At first no changes appear, no part of the feature I was implementing showed.  After hours of thinking and tracing CSS tags, I finally figured out what was causing the problem; it was a CSS BODY “class” tag,  My original development of the Expand and Collapse did not include wicket, so it was using the body as a container; but, with wicket the body was established only in the base page.  So with out causing any harm to other team members or to the other teams mock up implementation, I used a DIV tag as the container. 

 

Once the whole container problem was eliminated, finding which file to add the CSS and JavaScript too was no problem.  It actually, as I thought, belonged to the Scoreboard Manager page.

  

Conclusion

Incorporating CSS and JavaScript into wicket child seemed like an easy task, but for me it was mind bending; another problem I took lightly.  Now I know what to look for and where it would be; if it’s a CSS problem, using Dreamweaver really helps to finding what to change.  I also still have many features in my web arsenal, such as the slider bar and tooltip.  Those features, I know, will be used somewhere down the line in the development process.