<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7548303198746745945</id><updated>2011-04-21T14:49:59.937-10:00</updated><category term='ics 413'/><category term='MyIsern'/><category term='Code Review'/><title type='text'>KaYee's Engineering Log</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-4528650950252791224</id><published>2008-09-22T13:43:00.001-10:00</published><updated>2008-09-22T14:03:41.648-10:00</updated><title type='text'>Readings</title><content type='html'>I spent the weekend on reading the following papers: &lt;br /&gt;1. "Today" Messages: Lightweight Group Awareness via Email by A.J. Bernheim Brush and Alan Borning&lt;br /&gt;2. Group Awareness in Distributed Software Development by Carl Gutwin, Reagan Penner, and Kevin Schneider&lt;br /&gt;3. Providing Artifact Awareness to a Distributed Group through Screen Sharing by Kimberly Tee, Saul Greenberg, and Carl Gutwin&lt;br /&gt;4. Group Storytelling for Team Awareness and Entertainment by Group Storytelling for Team Awareness and Entertainment by Leonie Schäfer, Carla Valle, and Wolfgang Prinz&lt;br /&gt;5. Portholes: Supporting Awareness in a Distributed Work Group by Paul Dourish and Sara Bly&lt;br /&gt;&lt;br /&gt;The last one was written in 1992, which is not up-to-date so I will probably not use it as a reference. However, among the above five papers, I found it to be the best example for structuring my own paper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-4528650950252791224?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/4528650950252791224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=4528650950252791224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4528650950252791224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4528650950252791224'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/09/readings.html' title='Readings'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-5746085481707879845</id><published>2008-09-19T01:27:00.002-10:00</published><updated>2008-09-19T01:29:12.983-10:00</updated><title type='text'>Semester Plan</title><content type='html'>When you are working in a distributed work group, a general problem is maintaining awareness of what others are doing and in terms co-ordinating everyone effectively. The traditional approach to this problem is by having more meetings and more active communication within the group. However, when people are working, it would be quite distracting if they are required to communicate frequently about their status. &lt;br /&gt;&lt;br /&gt;My thesis is going to address this problem and my proposed solution is to have a software agent called Boswell that will keep track of what you are working on and broadcast activities of interest to your group to enhance communication. &lt;br /&gt;&lt;br /&gt;Boswell was started last semester with the main framework written in Java. My plan for this semester is to spend the rest of this month on integrating IM into Boswell. Currently, Boswell supports communication with Twitter and Facebook. From the last CSDL meeting, general feedback was that IM is likely more efficient for communication within a group. The API I am currently trying out is the Smack API. It is an API for Jabber written in Java. The goal is to have the system ready for evaluation in October. In mid-October, ICS 413 students will be invited to try out Boswell for a week and provide feedback. &lt;br /&gt;&lt;br /&gt;From now until November, I will continue with writing up the paper and doing literature reviews. For literature reviews, my plan is to read and analyze at least 4 papers a week. A blog entry will be written for every paper that I read. The goal is to have the final draft of the thesis completed by mid-November and everything done by December for the presentation at the Fall Forum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-5746085481707879845?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/5746085481707879845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=5746085481707879845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/5746085481707879845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/5746085481707879845'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/09/semester-plan.html' title='Semester Plan'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-3024066820330251116</id><published>2008-04-02T12:05:00.001-10:00</published><updated>2008-04-02T20:55:18.369-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><title type='text'>Informative Workspace Code Review</title><content type='html'>This week we had a chance to review the Informative Workspace's web application: project overviewer which is currently displayed in two of the moniotors in CSDL. It aims at providing a general overview of each of the 4 projects we are doing in ICS 414.&lt;br /&gt;&lt;br /&gt;Downloading and setting the project up was very straight forward. At first, verify doesn't pass becuase I am using a different version of PMD and Checkstyle. The team mentioned already mentioned that they are using different versions of some of the QAs so this is not surprising. After modifying the build files to refer to the correct version instead, verify passed. &lt;br /&gt;&lt;br /&gt;The team asked us to try and displayed our own project in the project overviewer. This turns out to be a pretty straight forward task too. All that is required is changing a couple line of PageInfoWork.java to provide my hackystat account information and the subversion url.&lt;br /&gt;&lt;br /&gt;Possible improvement:&lt;br /&gt;1. Includes a troubleshooting section. I encountered PermGem error very often at first, and I have to shut down and restart tomcat whenever that happen. At the end, I took away other .war or .jar file from the tomcat webapp folder and that stopped happening again. And also problem with deploying and undeploying the war file for multiple times in a session. These problems might be common with user and providing a section to guide user through them would be helpful.&lt;br /&gt;&lt;br /&gt;2. A count-down clock would be more useful than just displaying the milestone date in a line.&lt;br /&gt;&lt;br /&gt;3. Documentations on how to modify the code to display a particular project should be included. It may not be obvious to all users that all we had to do is to change a couple lines in the PageInfoWork.java to bring up their own projects.&lt;br /&gt;&lt;br /&gt;4. Documentation for changing the PMD, checkystat version number in the build.xml should also be included. Otherwises, some users may think that they have to upgrated their QA tools in order to build the project.&lt;br /&gt;&lt;br /&gt;5. Even though this is just for review purpose, it would be nice to include everything in all the projects instead of having to try import our own projects in the Info-Work page.&lt;br /&gt;&lt;br /&gt;6. The tree takes up too much space and I don't think it is necessary to list out all the files. For example, for our project, the .cs files are of more interests to the users. Just looking at all the .cs files would provide a good-enough overview of our project.&lt;br /&gt;&lt;br /&gt;All in all, the project overview had a good start and I look forwards to seeing the final product .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-3024066820330251116?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/3024066820330251116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=3024066820330251116' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/3024066820330251116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/3024066820330251116'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/04/informative-workspace-code-review.html' title='Informative Workspace Code Review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-8916464946459863441</id><published>2008-03-19T11:35:00.003-10:00</published><updated>2008-04-02T20:55:18.370-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><title type='text'>iHacky code review</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_z4ds-sG-7n4/R-GIvdmTfeI/AAAAAAAAANU/lxF2mFFOx40/s1600-h/iHacky.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_z4ds-sG-7n4/R-GIvdmTfeI/AAAAAAAAANU/lxF2mFFOx40/s400/iHacky.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5179571395433299426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am recently very fond of using facebook, so I was excited to try out the &lt;a href="http://code.google.com/p/ihacky/"&gt;iHacky &lt;/a&gt;application which is a facebook application designed for developers to communicate and network among themselves. &lt;br /&gt;&lt;br /&gt;Installation was very easy. Since I already have a facebook account, I simply followed the link given in their project page and with a simple click of button, the iHakcy application was added to my profile immediately. After trying it out, I decided to check out the source code and try to set up my own iHacky following the instructions on the Developer's guide. That turns out to be not as smooth as the installation. I faced some problem with setting up the Apache server. In the end, it took me a long time to set it up but I am still having error with the PHP and I understand why the team suggested us that we could skip installing it locally.&lt;br /&gt;&lt;br /&gt;I am not familiar with PHP, but from the source code, they look pretty organized with plenty of comments. All in all, this application is still in early development phase and I see a lot of improvement in it. &lt;br /&gt;&lt;br /&gt;I installed iHacky on Monday and everything was working fine, but as of right now, the iHacky application is down. Clicking on the tabs would lead me to an error pages, so I will give the suggestions based on what I remember from using iHacky on Monday.&lt;br /&gt;&lt;br /&gt;In turn of the application's functionality and interface, I have the following suggestions:&lt;br /&gt;&lt;br /&gt;1. Allow user to change the hackystat account detail. &lt;br /&gt;&lt;br /&gt;2. Provides visual representation of ranking on the facebook profile page. For example, it could be done in an pyramid form like how "Who has the biggest brain" does. It would encourage people to use iHacky more often in order to get to the top.&lt;br /&gt;&lt;br /&gt;3. Provides more informative details on the user's profile page. Right now, it is only displaying "My Last time stamp is". &lt;br /&gt;&lt;br /&gt;4. Shows which of your friends are also using the application. Right now, I can do so by going to the iHacky development page. It could be just me but it literally took me a while before I remember that I can actually visit the application's homepage by clicking on the tiny link in the bottom of the page to see who is also using the application. Including the friends list in the iHacky homepage or in another tab would be helpful as it would encourage people to use the application if they know a lot of their friends are also using the applications. &lt;br /&gt;&lt;br /&gt;5. Allow people to contact the developers directly. Maybe they could have the developers listed there. Facebook can show "I am online" if the user is logged on. So if user can see one of the developer is online, they can message he directly for questions. &lt;br /&gt;&lt;br /&gt;Some other suggestions in term of documentation:&lt;br /&gt;1. It would be nice to have a troubleshooting section. When I test my PHP5 installation for the first time, it didn't work. I followed the instruction to set up a test.php but then it only showed an error page. &lt;br /&gt;&lt;br /&gt;2. The Wamp could be listed as one of the required components, with a note saying it is for easy installation of the PHP and other components. &lt;br /&gt;&lt;br /&gt;All in all, this is still in early development phase and I really look forwards to seeing the end product. Being a Facebook addict I would surely use it everyday to network with other developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-8916464946459863441?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/8916464946459863441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=8916464946459863441' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8916464946459863441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8916464946459863441'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/03/ihacky-cod-review.html' title='iHacky code review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_z4ds-sG-7n4/R-GIvdmTfeI/AAAAAAAAANU/lxF2mFFOx40/s72-c/iHacky.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-8148208529554190737</id><published>2008-03-17T10:17:00.003-10:00</published><updated>2008-03-17T11:57:16.264-10:00</updated><title type='text'>Hudson</title><content type='html'>Everyday when I walk into CSDL, the first thing I do is to look at the Twitter message board and the Hudson dashboard. They are both fun and informative. The Twitter message board lists all updates of everyone within the channel, it gives a sense of where everyone is going. Whereas for the Hudson dashboard, it gives visual representation of the project status. At CSDL, Hudson is displaying the status of all hackystat projects. Just take a quick look and the red(build failed) or blue(build suceeded) icons together with the "weather signs" gives a very clear picture of how the projects are doing. It is interesting to see how a single screen can provide so much information and gives a big picture of the system. It facinated me but at the same time, it gives me the impression that Hudson is quite complicated and would not be very easy to set up. I am proved wrong after installing Hudson in order to become familar with continuous integration.&lt;br /&gt;&lt;br /&gt;So basically, my concept of continuous integration used to a simple statement: compiling and building the system as frequent as possible, such as whenever the system has been updated. After going through the &lt;a href="http://www.ibm.com/developerworks/edu/j-dw-java-cq11207-i.html"&gt;tutorial &lt;/a&gt;and the &lt;a href="http://www.ibm.com/developerworks/java/library/j-ap11297/"&gt;reading&lt;/a&gt;, I got a more throughout idea of it, such as the benefits and basic requirements of it.&lt;br /&gt;&lt;br /&gt;From the tutorial, it explored Hudson. The first impression is: it is so java. I know before that Hudson is written in Java but what I didn't expect is it provided such extensive supoorts to Java QA tools, such as Ant, JUnit, PMD etc. Installation of Hudson was surprisingly easy. I simply download the war file, deployed it in tomcat and I was ready to define my first Hudson project, which is the Visual Studio Sensor.&lt;br /&gt;&lt;br /&gt;As mentioned above, Hudson provides extensive support to Java project and the tutorial also mainly covered steps in setting up a Java project. Since our sensor project is written in C#, I was worried at first if it would be hard to set it up in Hudson. But on the whole, everything were fine, the project is easily ported into Hudson. However, I faced problems when I tried to build it for real from command line using "DevEnv C:/VSSensor/VisualStudioSensor.sln /Build" as I would do on my computer. The problem is that it cannot run DevEnv and in the end, my group partner Jared solved the problem by having the buildsensor.bat. &lt;br /&gt;&lt;br /&gt;In order to put the sensor project on the CSDL server, the computer would first of all need to have Visual Studio installed and then follow the usual procedure of setting up a project, type in the command prompt to execute build and point the path to the buildsensor.bat. Compared to building a Java project, this is more troublesome. So I am thinking if we can employ NAnt to automate the build process so that we don't have to build the system by command. This &lt;a href="http://hudson.gotdns.com/wiki/display/HUDSON/NAnt+Plugin"&gt;NAnt plugin &lt;/a&gt;could be useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-8148208529554190737?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/8148208529554190737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=8148208529554190737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8148208529554190737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8148208529554190737'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/03/hudson.html' title='Hudson'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-6430688323326079532</id><published>2008-03-12T11:30:00.002-10:00</published><updated>2008-04-02T20:55:18.371-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><title type='text'>Visual Studio Sensor Code Review</title><content type='html'>Our classmates did a review of our project: Visual Studio Sensor for Hackystat. This is the project page and the source package is available here.&lt;br /&gt;&lt;br /&gt;In general, I am glad to see that they did not have much problem with installing the sensor. The main problem encountered is failure to build the system due to null reference to NUnit. This problem was addressed promptly by my group partner, Jared by posting a modified release.&lt;br /&gt;&lt;br /&gt;Also, I am not surprised to see that one of the biggest problem encountered was creating another instance of Visual Studio. This was also the problem that hindered us from writing test cases for the sensor.&lt;br /&gt;&lt;br /&gt;Based on the review, some of the sensor data now collected are apparently not useful and that is exactly what we would like to find out from the review. Apparently, some DevEvents such as CloseFile and OpenFile are not of much interests to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-6430688323326079532?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/6430688323326079532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=6430688323326079532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6430688323326079532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6430688323326079532'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/03/visual-studio-sensor-code-review.html' title='Visual Studio Sensor Code Review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-8451350460510148728</id><published>2008-03-05T11:41:00.003-10:00</published><updated>2008-04-02T20:55:18.371-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><title type='text'>Ambient Team Code Review</title><content type='html'>The &lt;a href="http://code.google.com/p/ambienthackystat/"&gt;Ambient Device &lt;/a&gt;team gave a presentation on their current release for us to do a review of their code. &lt;br /&gt;&lt;br /&gt;By following the installation and developer guide, I was able to check out and install the project. Installation was not difficult as I already have Hackystat installed and have a valid Hackystat account, so I don't have to go through setting up Hackystat again. Everything was fine until I try to run verify. According to the developer guide, it mentions that junit test should fail but the problem is it didn't mention which test should junit fail. So I am not sure if I am just having the error that the ambient team have or if I actually have additional problems that have to be fixed. In the end, I came across three major errors and spent a lot of time just to fix the first two. However, there is still an error: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z that I didn't know how to be fix.&lt;br /&gt;&lt;br /&gt;For the code itself, it was pretty organized and I don't see much problems with it but in term of documentation, it could have been better. Problems or areas that can be improved:&lt;br /&gt;&lt;br /&gt;1. Even though the code is pretty organized, there is a lack of comments. There are comments for each class and methods but comments within methods are rare, which makes it harder for the user to understand the code. &lt;br /&gt;&lt;br /&gt;2. The superclasses could have been more comprehensive instead of having only one method.&lt;br /&gt;&lt;br /&gt;3. When the jar file is invoked, there is only a statement saying "LastBuild: Active" which is not helpful as it doesn't give the user any information whether it is actually communicating with the orb successfully or not. &lt;br /&gt;&lt;br /&gt;4. For documentation, a troubleshooting section would be really helpful. Apparently, many of us are having the same junit errors that makes verify fail such as the Jaxb api problem and the javamail installation problem. So if they can provide solutions to these problems, it would make the developer guide more comprehensive and helps the user.&lt;br /&gt;&lt;br /&gt;5. There should be instructions or references instructions to install Hackystat in their developer guide. It would be confusing for users who have no prior experience with Hackystat. &lt;br /&gt;&lt;br /&gt;6. Another obvious problem is it takes too long for the orb to change color. This is a problem because during the wait for the orb to change color, the project situation could have been changed completely. For example, it could have gone from a failed build to a successful build again. &lt;br /&gt;&lt;br /&gt;It was a fun experience to do this review as it gave me to chance to play with the ambient orb for the first time. The ambient team has surely got a good start with their project. There is big potential to this project. As mentioned above, I think their code is working well and the main problem is with the documentation and the color changing latency, both of which should not hard to fix as the latter could be fixed by acquiring the appropriate hardware. I look forwards to see what the ambient team is going to do with the Nabaztag as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-8451350460510148728?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/8451350460510148728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=8451350460510148728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8451350460510148728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8451350460510148728'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/03/ambient-team-code-review.html' title='Ambient Team Code Review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-7222681460265767462</id><published>2008-02-25T11:59:00.001-10:00</published><updated>2008-02-25T12:01:11.557-10:00</updated><title type='text'>REST principle</title><content type='html'>I was introduced to the REST architecture in our class. REST is basically a software architecture that outlines how resources are defined and addressed. Some key-features of REST includes:&lt;br /&gt;- All resources has a unique URI.&lt;br /&gt;- Each request is an independent transaction, i.e. stateless communication&lt;br /&gt;- Employs standard methods, namely GET, POST, PUT, DELETE&lt;br /&gt;&lt;br /&gt;We are working on building a Hackystat sensor for Visual Studio. REST is a very reasonable architecture but I don't think we need to provide a RESTful interface for the sensor. Basically, the sensor is build as an Add-In to Visual Studio where it extracts user activities and sends the data to the Hackystat SensorBase via the SensorShell. Since data transfer is done by the SensorShell, the main job is the sensor is to communicate between the SensorShell and the Visual Studio and so it doesn't need to employ REST principles. For example, it does not have use standard GET and POST methods.&lt;br /&gt;&lt;br /&gt;The Hackystat SensorBase follows the REST principle pretty well. Resources are given their unique URIs and they are employing the standard HTTP methods which are GET, PUT, DELETE, HEAD, and POST.&lt;br /&gt;&lt;br /&gt;On the other hand, I don't think the Hackystat ProjectViewer follows the REST principle. Resources all share the same URI. Users are not able to retrieve a particular resources by typing in URI alone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-7222681460265767462?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/7222681460265767462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=7222681460265767462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7222681460265767462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7222681460265767462'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/02/rest-principle.html' title='REST principle'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-6122563719356320447</id><published>2008-02-11T13:15:00.000-10:00</published><updated>2008-02-11T14:42:47.205-10:00</updated><title type='text'>Introduction to Hackystat</title><content type='html'>This assignment didn't take me too long as I have gone through these step already. I installed Hackystat at the beginning of the semester for my thesis and so this assignment was mainly just a re-visit of the tutorials. I didn't encounter any problem this time. However, I remember havinh problem with the Ant sensor the first time I use it as I was confused with how to set up the environment variable but that was just a minor problem that was easily fixed. Other than that, I don't think I went into any other problems. The detail documentation along with screenshots were really helpful and that solved a lot of potential problems during installation of Hackystat.&lt;br /&gt;&lt;br /&gt;For this semester, I hope to first get an idea of my own software engineering practice through Hackystat. I wish to get a better idea of how I organize my time around a project. It will hopefully help me develop a healthier software development process, i.e. a steady and persistent trend of time spend on the project instead of staying up for nights before the project is due. I am also very interested in knowing other aspect of my software development process such as whether I am following the test driven development practice or not.&lt;br /&gt;&lt;br /&gt;Also, for our project this semester, we will be building sensors for Hackystat. The first sensor that we are going to build is designed for Visual Studio. In order to build a sensor for Hackystat, it is essential to get familiarized with how to use Hackystat to collect data. So we will probably be employing Hackystat with IDEs that we use most frequently such as Eclipse. &lt;br /&gt;&lt;br /&gt;From my experience with Hackystat so far, I feel that it fulfilled all three of the Prime Directives successfully. It surely accomplishes a useful task: collect metrics for software development process and analyze them. An external user can also successfully install and use the system based on the result of this assignment. Finally, for external developers, there are detail documentation for each subproject of Hackystat which makes enhancing the system easier.&lt;br /&gt;&lt;br /&gt;I have been reading the documentation and just playing around with Hackystat to familiarize myself with it for a while. I guess I am at a point where I feel comfortable to explore more of it and try out different possibilities with it and I am very much looking forward to that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-6122563719356320447?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/6122563719356320447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=6122563719356320447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6122563719356320447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6122563719356320447'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/02/introduction-to-hackystat.html' title='Introduction to Hackystat'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-8190450328271357858</id><published>2008-01-28T11:45:00.000-10:00</published><updated>2008-01-30T15:18:23.174-10:00</updated><title type='text'>My first professional portfolio</title><content type='html'>I have never created a professional portfolio before and frankly speaking, I have never thought of doing one before. I used to think that it is sufficient to have a resume and cover letter for job applications but after completing &lt;a href="http://alicekayee.googlepages.com/"&gt;this first version of my portfolio&lt;/a&gt;, my opinion changed completely. &lt;br /&gt;&lt;br /&gt;Having a professional portfolio provided a place for me to talk about things such as my personal background which otherwise could not fit onto a resume. It also allowed me to go into more details about the projects I have done instead of just listing them in one sentence on my resume. Moreover, by creating this portfolio, I was given the chance to seriously reflect on what I have learned in my four years of college and more importantly, what I want to do in future. I once again realize my weakness: Have knowledge of an array of technologies but don't know any of them in-depth. MyIsern was the only project that I considered to be qualified as a "project". I used to think I learned quite a lot in school. I guess, quantitatively, that is true. But quality-wise, I just don't have extensive experience in the technologies that I learned in class. &lt;br /&gt;&lt;br /&gt;While pondering on my strengths and weaknesses as I worked through this professional portfolio, I was lead back to the reason of why I want to do an Honors Thesis. I am going to address my technical weaknesses by working on this Thesis. Sometimes, I am being asked why I am spending all the extra time and effort on something you are not required to do at all. My answer? There are three main reasons. Firstly, I am not satisfied with what I am getting out of the classes alone. We get to learn a new language for a semester but you only get to learn the basic. I feel like I learn quite an array of technologies but I don't know any of them well enough. I consider this as my weakness and I want to work on it. I see doing an Honors Thesis for a year as a good opportunity to drill on my skills. Moreover, the thesis would be something that I chose to do, unlike the projects that we are assigned to do in classes and I am excited about getting a project of my own. Secondly, I want to improve my English and by working on this thesis, I will be reading a lot and writing a lot which are good exercises to brush up my poor English. Lastly, I am still debating between going to graduate school and getting a job straight out of college. Doing this thesis should give me an idea of what it is like to be in the graduate program working on your own thesis and I hope to make a decision on that based on this experience. &lt;br /&gt;&lt;br /&gt;Working on this portfolio gave me the chance to reflect on strengths and weaknesses and I am glad that now I have a clearer direction of what I am lacking and where I want to go next.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-8190450328271357858?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/8190450328271357858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=8190450328271357858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8190450328271357858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8190450328271357858'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2008/01/my-first-professional-portfolio.html' title='My first professional portfolio'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-104542086334396897</id><published>2007-12-10T02:38:00.000-10:00</published><updated>2008-01-29T10:10:46.072-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>33. Prime Directives Redux</title><content type='html'>The Three Prime Directives are:&lt;br /&gt;1. The system accomplishes a useful task. &lt;br /&gt;2. An external user can successfully install and use the system. &lt;br /&gt;3. An external developer can successfully understand and enhance the system. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;1. Interactive Development Environments (Eclipse, VisualStudio, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This prime directive is fulfilled as it allows developers to develop a system more efficiently by providing syntax check, debugging etc which saves time and allow the developers to focus on implementing the system instead of handling minor repetitive errors.&lt;br /&gt;PD2: This is generally fulfilled as external users (developers in this case) are able to download them from their site or purchase them and then set up the IDE accordingly.&lt;br /&gt;PD3: This is generally fulfilled, provided the IDE concerned is open source where the source code of the IDE is available for download. Otherwise, developers generally cannot make much change to the copy-righted IDE and enhance it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;2. Coding Standards and Coding Standards Compliance Tools (Checkstyle, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: These tools fulfill the first Prime Directive by making the codes follow a conventional format and make it easier for developers to understand the code.&lt;br /&gt;PD2: This Prime Directive does not apply to the users as users generally do not need to know the coding standards and the Compliance tools in order to use the system. &lt;br /&gt;PD3: This Prime Directive can be fulfilled for the Coding Standards Compliance tools by having the source code available so that developer can enhance the system. Very often, developer guides are also available to aid developers with understanding the system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;3. Build Systems (Ant, Make, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This Prime Directive is fulfilled as these build systems make it easier for developers and users to build the system by automating the tasks required. &lt;br /&gt;PD2: This Prime Directive is also fulfilled as users can download these systems and utilize them to facilitate the build process of other applications.&lt;br /&gt;PD3: This Prime Directive is also fulfilled as developers can enhance the systems according to their own needs for specific projects. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;4. Automated Quality Assurance Tools (PMD and FindBugs, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: These tools fulfilled the first Prime Directive by making sure that the code is bug free by avoiding some coding practices that are likely to cause bug later on.&lt;br /&gt;PD2: The second Prime Directive is also fulfilled as users can use these systems and run them over other systems to make sure they are bug-free.&lt;br /&gt;PD3: Similar to the case of build systems, his Prime Directive is also fulfilled. Developers can enhance the systems accordingly to fit their own needs for their code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;5. Black and White Box Testing &lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This prime directive is fulfilled as they help developers find out the bugs, for example run-time errors which are not catch by QA tools, in the program.&lt;br /&gt;PD2: This prime directive does not directly apply as users generally are not concerned with the testing of the program that they are using. However, if the system is thoroughly tested it would generally facilitate the user with installing and using the system.&lt;br /&gt;PD3: This prime directive is fulfilled as developers can enhance the testing to fully cover their code to ensure they are working properly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;6. Automated Testing Tools (JUnit, HttpUnit, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This is fulfilled as they are useful tools that automated and simplified the process of testing the codes and thus make sure the codes are working up to expectation by finding out the bugs.&lt;br /&gt;PD2: This Prime Directive is also indirectly fulfilled as users can have an easier time installing and using the system if the system has been tested thoroughly with these testing tools.&lt;br /&gt;PD3: This Prime Directive is fulfilled as developers can utilize them to test other systems by enhancing them accordingly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;7. Configuration Management (CVS, SVN, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: They fulfilled the first Prime Directive by providing a repository that allows developers to work on the same code at the same pace while solving the problem of simultaneous update. &lt;br /&gt;PD2 &amp; PD3: Both Prime Directives are fulfilled as developers can use the configuration management to work on a project together and thus enhance the system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;8. Issue Driven Project Management &lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: It fulfills the first Prime Directive as it facilitates the software development process by breaking down a project into smaller parts. This allows programmers to have a better idea of what works are left to done and also helps divide the work among the team.&lt;br /&gt;PD2: It does not apply to the second Prime Directive as users are not involved in the software development process.&lt;br /&gt;PD3: It fulfills the third Prime Directive as it allows developers to better divide the work and keep track of where they are in the software development process, thus enhancing the system produced.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;9. Use Cases&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This prime directive is fulfilled as use cases allow developers to better understand how their systems will be used and thus have a clearer direction in designing their systems.&lt;br /&gt;PD2: This prime directive does not apply as use cases are users are not concerned with the use cases scenario of the system they are using.&lt;br /&gt;PD3: This prime directive is fulfilled as developers can come up with use cases according to the system concerned.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;10. Software Review &lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This prime directive is fulfilled as they allow developers have to their systems reviewed by someone else. With such reviews, they can obtain constructive feedbacks in different areas such as installation procedures, code formatting, &lt;br /&gt;PD2: This prime directive does not apply as software review should be done before the software is released for users to download and use.&lt;br /&gt;PD3: This prime directive is fulfilled as it allows developers to get a better idea of how their programs are doing and enhance it accordingly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;11. Agile Methods (XP, Scrum, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This prime directive is fulfilled as Agile Methods allows programmers to work together in team more effectively.&lt;br /&gt;PD2: This prime directive does not apply as Agile Methods are practice of software programming.&lt;br /&gt;PD3: This is fulfilled as developers can enhance the system by practicing these methods to produce higher quality code.&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;12. Open Source Licenses (GPL, CPL, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: These fulfilled the first Prime Directive by allowing developers to share their products with everyone freely. &lt;br /&gt;PD2: This prime directive is fulfilled as they allow users to freely download and use programs distributed under them.&lt;br /&gt;PD3: Similarly, this prime directive is fulfilled as they allow developers to freely contribute to the codes and make changes to the system.&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;13. Online Hosting Services (Google Project Hosting, SourceForge, etc.)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;PD1: This prime directive is fulfilled as these online hosting services provide an easy mean for developers to post and share their projects as well as to searcher for other projects. This facilitates the process of posting and sharing projects with each others.&lt;br /&gt;PD2: This prime directive is fulfilled as users can download programs from these hosting services.&lt;br /&gt;PD3: This prime directive is fulfilled as they provide a place for developers to share and search for projects.&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-104542086334396897?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/104542086334396897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=104542086334396897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/104542086334396897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/104542086334396897'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/12/33-prime-directives-redux.html' title='33. Prime Directives Redux'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-2300565718493614709</id><published>2007-12-09T23:54:00.000-10:00</published><updated>2008-01-29T10:10:46.072-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>MyIsern-Onyx-2.0 Review</title><content type='html'>&lt;strong&gt;&lt;font color="WHITE"&gt;Team reviewed: Onyx&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;Our team decided to break up the review into four parts and I was given the task to review their web application. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;Installation:&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;Their distribution package is easily found on their hosting site. Downloading and extracting the file was easy and smooth. Installation went well as they have detail instructions on their wiki page and also in the readme file that come in the distribution package. After executing ant -f tomcat.build.xml, I was ready to navigate their site.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;Web Design:&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;They done a good job with the login page. The login page is simple and very informative. Even before logging in, the user can get a comprehensive view of what the page does as a detail description is listed there.&lt;br /&gt;&lt;br /&gt;They choose a very nice template which looks professional. The black background stands out nicely. However, as Professor Johnson mentioned during the presentation, the black background and the grey texts in the main body might be hard to see when projected on a projector. Although no&lt;br /&gt;&lt;br /&gt;The color scheme was also very good. The white title is catchy against the black background. If the color of the sidebar, which is currently green, can match with that of the main title bar, everything should look even more organized.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;Screen Real Estate:&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;On the whole, team Onyx did a good job in term of screen real estate. The space allocated for the main body text is wide enough. However, when the window is reduced to less than 1/2 of the monitor space, the side bars cannot be show and some of the main body text is also not visible. I have to scroll across the page in order to see all the text. &lt;br /&gt;&lt;br /&gt;Quite often, I have to scroll down the page to see some content and I think that can be improved by several ways:&lt;br /&gt;1. Make the title smaller. It is catchy now but it takes up quite a lot of space.&lt;br /&gt;2. Put the Logout Sign on the same level as the title or on the main navigation bar. Right now, it is occupying a separate row at the top.&lt;br /&gt;3. They are too much white space inside the sidebars. Minimizing those white space might be a good idea.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;Overall:&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;I tried their webpage on both Internet Explorer and Firefox and both worked well. Therefore, their website is user friendly regardless of the browser the user is using. Overall, this is a very well designed webpage and as a user, I had an easy time navigating it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-2300565718493614709?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/2300565718493614709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=2300565718493614709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/2300565718493614709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/2300565718493614709'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/12/myisern-onyx-20-review.html' title='MyIsern-Onyx-2.0 Review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-4688130465124169862</id><published>2007-11-16T08:29:00.001-10:00</published><updated>2008-01-29T10:10:46.073-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>29.MyIsern-1.3-review</title><content type='html'>&lt;style type="text/css"&gt;.nobr br { display: none }&lt;/style&gt;&lt;br /&gt;Author reviewed: Team Brown&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;1. Installation Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;It was very easy to find and download their project as Randy has posted an entry for myIsern-1.3 and the link for download is easily accessible there. &lt;br /&gt;Installation was easy. They have an installation guide and the link to it is also incldued in the blog. By following the instructions there, installation went well. All QA tests passed except for junit.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;2. Code format and conventions review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They did a great job with code format. I couldn't spot any violation only a few minor ones find in the MyIsernActionBean.java which has uncommented prviate members and an irrevalant comment on line 51 from conflicted file during update. There are also some prviate members that are not commented in other files but other than these, everything is good.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;3. Test Case Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;Black box perspective:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Most of the Action Beans are tested throughly, but the model still needs more testings. In particalar, DataIntegrityReportBean is not being tested at all.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;White box perspective:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Emma Coverage summary&lt;br /&gt;class:   88%  (15/17)&lt;br /&gt;method:  83%  (133/161)&lt;br /&gt;block:   70%  (1728/2473)&lt;br /&gt;line:    72%  (373.8/522)&lt;br /&gt;&lt;br /&gt;The coverage is pretty good as almost all classes are tested. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;Break da buggah:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The program crush when pressing the save button for the collabotation item. An error always occur there even if no data is changed for that item. Also, by declaring a new organization entry, the xml file would be corrupted. Only the first 4 entries remain while all the rest, including with the new entry created would be erased from the file. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;4. User Interface Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The user interface was simple and concise. In turns of real estate, they have done a great job! It functions well even when the screen is reduced to a small size. However, it was purely text-based and using more graphic should make it more attractive and professional-looking.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;5. Summary and Lessons Learned:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They have achieved a lot with only a week! After reviewing their code, I learned how to implement the login page using Security filter which our group was previously stuck in. Also, the installation guide was a great help to users and our group should include one too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-4688130465124169862?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/4688130465124169862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=4688130465124169862' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4688130465124169862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4688130465124169862'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/11/29myisern-13-review.html' title='29.MyIsern-1.3-review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-12626709731994160</id><published>2007-11-05T02:10:00.000-10:00</published><updated>2008-01-29T10:10:46.073-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>26.StackStripesExtension</title><content type='html'>The source code can be found &lt;a href="http://www2.hawaii.edu/~kyleung/stackstripes-1.0.1105.zip"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a fairly straight forward assignment. All tasks are accomplished and the Emma coverage is 100%.&lt;br /&gt;&lt;br /&gt;The main problem I faced was Emma. I keep getting the same error that coverage.ec is missing and thanks to the discussion group, I found the solution to the problem by modifying the emma.build.xml. Other than this, there were only some minor problems.&lt;br /&gt;&lt;br /&gt;This is the first time I use Tomcat and Stripes. So far, I feel comfortable with both of them as they are both easy to learn and use. However, the way that emma keeps forcing Tomcat down is very inconvenient and at the beginning, I always forget to start up tomcat again before I run StackStripes or other build.xml files. But soon it becomes a habit and everything was fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-12626709731994160?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/12626709731994160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=12626709731994160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/12626709731994160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/12626709731994160'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/11/26stackstripesextension.html' title='26.StackStripesExtension'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-5923388686793708500</id><published>2007-11-05T00:38:00.000-10:00</published><updated>2008-01-29T10:10:46.073-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>25.WebAppQuestions</title><content type='html'>&lt;strong&gt;&lt;font color="WHITE"&gt;1.Explain in your own words the meaning of the web "request-response cycle".&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The "request-response cycle" refers to a cycle of data-retrieval between a server and a client. The client, usually a user, would send out a request to the server. The server would then try to match the request to produce a response, usually a webpage. The client might send out another request after retrieving the information from the response and the cycle goes on.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;2.Explain how servlets facilitate processing of the request-response cycle.&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Servlets facilitates the process by allowing user to send in request and then produce dynamic response displayed on a webpage.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;3.How do you login to the Tomcat Manager?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Make sure Tomcat is running by invoking "catalina run". Go to http://localhost:8080 and the tomcat page should show up. Click onto the link "Tomcat Manager" and log in with the pre-set username and password. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;4.What is the Tomcat Manager used for in the StackStripes application?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;It is used for deploying StackStripes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;5.What is the directory and file layout of an installed web application like StackStripes?  (This is NOT the same as the directory and file layout of the StackStripes distribution!)&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The directory is named StackStripes in the Tomcat's webapps folder. There are the 2 .jsp files and two subdirectory named META-INF and WEB-INF. META-INF contains meta data whereas WEB-INF contains java classes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;6.How do you build a war directory structure in Ant? Where is this accomplished in the StackStripes application?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;A war directory structure can be created by defining a task that specify the target war file to build, the web.xml and the destination of that war file.&lt;br /&gt;In StackStripes, this is accomplished in the build.xml.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;7.How do you install a war directory in a running Tomcat server? What information does the Ant task need to accomplish this?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;If Tomcat is running, we can just copy and paste the .war file into the Tomcat's webapps folder. To do so with an Ant task, create a task as described in the previous question.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;8.What is the "Model2" architecture?  What are its advantages?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Model2 uses the Model-View-Controller design pattern which separate data (model) and user interface (view) concerns by a controller. The advantage is that changes made to the user interface will not affect data handling and vice versa.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;9.What are JSP pages?  How are they related to servlets?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They are pages that contain java script which provides dynamic response to a web client request. They are compiled into a servlets by a JSP compiler.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;10.Why is there a delay when retrieving a JSP page for the first time?  Where is the Java code for that page stored?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;This is because a JSP page has to be compiled into a servlet. Once it is compiled, it is stored into the servlet and allows quick retrieval of the page. The Java code is stored inside the page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;11.What are JSTL tags?  Why are they useful?  What is an example JSTL tag from the StackStripes system?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;JSTL tags provide most functionality needed in a JSP page. They are useful because they are in XML format and so are convenient to use.&lt;br /&gt;&lt;br /&gt;An example is found in index.jsp:&lt;br /&gt;&lt; c:forEach var="element" items="${actionBean.stackIterator}"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;12.What are Stripes tags? Why are they useful?  What is an example Stripes tag from the StackStripes system? &lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They are tags that start with "strips:" and they are very useful becuase they link up the Java classes and the JSP pages. &lt;br /&gt;&lt;br /&gt;An example is found in index.jsp:&lt;br /&gt;&lt; stripes:submit value="push" name="push"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;13.What is HttpUnit?  How is it different from JUnit? Why is it useful?  What is an example use of HttpUnit from the StackStripes system?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;HttpUnit tests the code by simulating browsing a site whereas JUnit can only tests Java code and cannot simulate browser behavior.&lt;br /&gt;&lt;br /&gt;An example is found in TestStackActionBean.java:&lt;br /&gt;    WebRequest pushRequest = pushForm.getRequest();&lt;br /&gt;    pushRequest.setParameter("numToPush", "1");&lt;br /&gt;    response = conversation.getResponse(pushRequest);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;14.What needed to be changed in order to implement the Double It button? What didn't need to be changed? What did you learn about the MVC design pattern from this exercise?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;A method to implement doubling a stack is added and index.jsp is modified to define the button &lt;br /&gt;that execute the method. From this, I learned that the controller need not be modified.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;15.What are the equivalence classes that need to be tested for the Double It button?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The equivalence classes includes doubling an empty stack, doubling a normal stack and doubling a stack with a lot of items.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;16.Provide two screen images of your new StackStripes application with the Double It button, one showing the page before and one showing the page after hitting the "Double It" button.&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Before:&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_z4ds-sG-7n4/Ry8Nyqi7ZDI/AAAAAAAAAD0/j7aSNVyhZfc/s1600-h/before.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_z4ds-sG-7n4/Ry8Nyqi7ZDI/AAAAAAAAAD0/j7aSNVyhZfc/s400/before.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5129333664663692338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After:&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_z4ds-sG-7n4/Ry8N2Ki7ZEI/AAAAAAAAAD8/52lsUxTiPe8/s1600-h/after.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_z4ds-sG-7n4/Ry8N2Ki7ZEI/AAAAAAAAAD8/52lsUxTiPe8/s400/after.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5129333724793234498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;17.What is the singleton design pattern?  What is an example of its use in StackStripes?  Why is it needed?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;It is a design pattern used to restrict instantiation of a class to only one object. &lt;br /&gt;&lt;br /&gt;An example is found in StackModel.java:&lt;br /&gt;private static StackModel theInstance = new StackModel();&lt;br /&gt;&lt;br /&gt;This is needed to ensure the user is only dealing with the same stack all the time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;18.Some of the StackStripes tests exercise code on the "server side", while others exercise code on the "client" side. Which test classes exercise code on the "server", and which exercise code on the "client"? How does Emma deal with this to create appropriate coverage data?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;TestStackActionBean.java tests on the server side by using HttpUnit and JUnit while TestStackModel.java tests on the client side using JUnit. Emma shuts down Tomcat in order to get the coverage on server side testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;19.Running 'ant -f junit.build.xml' results in the following target invocations: tomcat.check, tomcat.undeploy, compile, war,  tomcat.deploy, junit.tool, junit.report, junit.  Explain what each of these targets do.  &lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;tomcat.check: Check to see if Tomcat is running &lt;br /&gt;tomcat.undeploy: Undeploy the application from Tomcat if it exists&lt;br /&gt;compile: compile the source code&lt;br /&gt;war: generate the war directory&lt;br /&gt;tomcat.deploy: deploy the application onto Tomcat&lt;br /&gt;junit.tool: runs junit tests over the source code&lt;br /&gt;junit.report: genearte html report on junit tests result&lt;br /&gt;junit: to run junit.tool and junit.report&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="WHITE"&gt;20.(Optional) If you have experience using one or more other web application frameworks, discuss your initial reactions to Stripes.  How is it similar, or different, or better, or worse than your previous experience?  &lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Tomcat is the only web application frameworks I have worked with so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-5923388686793708500?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/5923388686793708500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=5923388686793708500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/5923388686793708500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/5923388686793708500'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/11/25webappquestions.html' title='25.WebAppQuestions'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_z4ds-sG-7n4/Ry8Nyqi7ZDI/AAAAAAAAAD0/j7aSNVyhZfc/s72-c/before.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-642196015135593755</id><published>2007-10-22T03:04:00.000-10:00</published><updated>2008-01-29T10:10:46.074-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>21.MyISERN-1.2</title><content type='html'>Link to our project page: &lt;a href="http://code.google.com/p/myisern-1-red/"&gt;http://code.google.com/p/myisern-1-red/&lt;/a&gt;&lt;br /&gt;Project download: &lt;a href="http://code.google.com/p/myisern-1-red/downloads/list"&gt;http://code.google.com/p/myisern-1-red/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tasks:&lt;/strong&gt;&lt;br /&gt;All tasks for this assignment are completed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt;&lt;br /&gt;There were several problems faced. Firstly, we were confused with how to implement the methods to edit current researcher, collaboration or organization. We come up with several possible implementation ideas and finally clarified with Dr. Johnson on what the users expects to do when editing information. However, the actual implementation was not as easy as we thought. We come into problems when we write these methods and checking the link is a particular one that gave us lots of troubles. We used httpunit to check and validate the links but it kept giving us various errors when we run the program. After spending a whole night on adding in more data checking and throwing in exceptions, this problem was finally solved. Secondly, there was the problem with displaying our data in the table. We used Swing to print out tables. It worked fine for printing the researchers and organization which has a relatively simpler structure than the collaboration data. However, when it came to the collaboration data, we have trouble with displaying some entries. For example, those with missing years cannot be displayed at all. Thirdly, when my groupmate Jared did the testing, he kept receiving error: “junit.framework.AssertionFailedError: Forked Java VM exited abnormally” which is probably due to the vast amount of data put into the heap. After trying other possible tests, in the end, he has to take out those tests as there was no way to get around the problem caused by limitation of memory available. Lastly, there is the problem with entering the data. I entered the collaboration data and it was quite tedious to figure out the collaboration data from the given pdf, there was a lot of missing data so a lot of guesses was put in to make it as complete as possible. However, this is not a big problem compared to coding and it gave a good taste of what it is in real life at work because the users won’t always give you every data or requirements you need and you have to be able to sort them out. &lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Group work:&lt;/strong&gt;&lt;br /&gt;This is a nice experience working with my groupmates Jared and Phuoc as we are all willing to help each other whenever needed. One problem we faced was the lack of overall coordination. We didn’t assign work explicitly to each member. We all just took up whatever work is not done at that moment and worked on it. If we faced problem as we worked on our tasks, we would bring it out and the other members would always be willing to help which is encouraging. However, we feel that it would be more efficient if we just break down the tasks and assign them to each member instead. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Improvement for next Milestones:&lt;/strong&gt;&lt;br /&gt;There is mainly two ways to improve the process and the project itself. Firstly, in terms of group work, we would improve the overall coordination by breaking down the tasks into smaller parts and assign them to each member instead of volunteering to take up whatever part is left undone. This should make this programming process more efficient. Secondly, we would consolidate the code. For example, we have separate methods for adding or editing researchers, collaborations, and organizations respectively. In these methods, there are all performing similar actions and these actions could possibly be simplified by grouping them as another method. Moreover, given this project has grown so much in size that we have thousands of codes now, there would absolutely be other places with reluctant codes. We would go through the code in details for our next milestone and sort these codes out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-642196015135593755?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/642196015135593755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=642196015135593755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/642196015135593755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/642196015135593755'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/21myisern-12.html' title='21.MyISERN-1.2'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-7238769924535844735</id><published>2007-10-22T02:04:00.000-10:00</published><updated>2008-01-29T10:10:46.075-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>19. Use Case Specification</title><content type='html'>Link to the use cases for our team: &lt;a href="http://code.google.com/p/myisern-1-red/w/list"&gt;http://code.google.com/p/myisern-1-red/w/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When we started working on the use cases during our meeting, one minor problem we faced was finding a suitable template for it. This problem is solved after doing some googling and looking at other group's use cases. &lt;br /&gt;&lt;br /&gt;By writing up the use cases, we pulled back from our programmer's perspective and looked at the program from the user's point view. This is very useful when we work on the user-interface and the program design as we have this as a reference guide.  This way, we know what the users are using it for and expects and we can then model our design to best accommodate their need while saving us time on pondering through various design implementations. Moreover, by writing out the steps that the user takes to perform a particular action, we can see clearly whether there are reluctant steps and then simplify it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-7238769924535844735?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/7238769924535844735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=7238769924535844735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7238769924535844735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7238769924535844735'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/19-use-case-specification.html' title='19. Use Case Specification'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-5700087448976092217</id><published>2007-10-17T07:45:00.001-10:00</published><updated>2008-01-29T10:10:46.075-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>22.MyISERN-1.1.Review</title><content type='html'>&lt;style type="text/css"&gt;.nobr br { display: none }&lt;/style&gt;&lt;br /&gt;Author reviewed: Ben Karsin of team Ivory&lt;br /&gt;This is the first time we can choose the author to review and so I chose a graduate student’s team to learn from them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;1. Installation Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;I went to the project page listed on his blog and downloaded the package successfully. Installation was quick and easy. Verify passed indicating JUnit, Checkstyle, PMD, and FindBugs tasks all passed too. The program also enable the creation of a jar file upon typing “ant jar”.&lt;br /&gt;&lt;br /&gt;It was very easy to figure out how to use their program as they provided a helpful list of queries upon typing in “java –jar myisern-ivory.jar”. It also listed the link to the user guide in case the user needs more instruction on using the program. I found this queries list very helpful and I always return to it when I was testing the program as it was hard to remember all the different combination of queries. However, there was a typo in one of the queries: “-listCollaboraitons -researcher &lt;uniqueID&gt;” where “-listCollaboraitons” is misspelled. Tables or descriptions are produced as desired. However, the tables are printed in a rather messy way and it was hard to read. Then I realize it might be the problem with the size of my command prompt. So I reset the size the command prompt from standard size to full-screen. This turned out to be quite complicated as I have to first select “property” and then reset the “screen buffer size” before I can maximize the command prompt to full-screen. After that, the tables are displayed nicely. It might be helpful to add a line to the queries list saying the tables are best viewed in full-screen command prompt. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;2. Code format and conventions review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They modularized their codes and so there are a number of files in this project. However, after going through all of them, only TestQueryParser.java contains some minor violations. All the codes are also commented well. They have done a good job on code format and conventions.&lt;br /&gt;&lt;div class="nobr"&gt;&lt;br /&gt;&lt;table border="1"&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;File&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Lines&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Violation&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Comments&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;TestQueryParser.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;59,60,71,*&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-7&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Should include white spaces &lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;3. Test Case Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;Black box perspective:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The purpose of this program is to print out tables based on the input queries and they have done a lot of testing on the input. However, they have missed out testing the boundary cases for “-listOrganization”. Other than that, they have done a pretty good job on black box testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;White box perspective:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Emma Coverage summary&lt;br /&gt;class:    100% (12/12)&lt;br /&gt;method:   89%  (65/73)&lt;br /&gt;block:    87%  (2684/3091)&lt;br /&gt;line:     85%  (452.5/532)&lt;br /&gt;&lt;br /&gt;One reason why some coverages are not 100% is they forgot to check “-listOrganiztion” as indicated above. The TestXmlQuery.java was supposed to test all the methods in XmlQuery.java but they have left out this one.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;Break da buggah:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They have done throughout testing and managed to catch most of my incorrect/invalid queries. However, upon typing “java -jar myisern-ivory.jar -describe -researcher PhilipJohnson” it returns the NullPointerException. &lt;br /&gt;&lt;br /&gt;Similar errors also with “-describe –organization &lt; uniqueID&gt;” and “-describe –collaboration &lt; uniqueID&gt;” occur upon typing in anything other than a valid &lt; uniqueID&gt; that exists in the database. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;4. Summary and Lessons Learned:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Overall, this program is pretty well-written. One thing I learned from Ben’s team is how to modularize a program. When I first imported the project into Eclipse, I was overwhelmed by the long list of java file there are and didn’t know where to start. It was a big difference from our team’s project which only comprises of two file and all the methods are put within MyIsernXmlLoader.xml. However, once I started going through their project, I was impressed with how organized the codes are. They broke down everything and put them into separate classes which makes it very easy to locate a particular method and to make changes. Given MyIsern is such a big project, I can see how modularization will be especially useful. This is something that my team is going to work on in the next milestone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-5700087448976092217?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/5700087448976092217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=5700087448976092217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/5700087448976092217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/5700087448976092217'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/22myisern-11review.html' title='22.MyISERN-1.1.Review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-6021779829020968705</id><published>2007-10-14T23:12:00.001-10:00</published><updated>2008-01-29T10:10:46.076-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>18. MyISERN-1.1</title><content type='html'>All tasks for this assignment are completed. &lt;br /&gt;&lt;br /&gt;Our team's project page is &lt;a href="http://code.google.com/p/myisern-1-red/"&gt;http://code.google.com/p/myisern-1-red/&lt;/a&gt; and the source code can be downloaded &lt;a href="http://myisern-1-red.googlecode.com/files/myisern-1-red-1.1.1015.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Assignment difficulty:&lt;/strong&gt;&lt;br /&gt;This assignment is more difficult than the first one. One of the problems encountered is how to obtain the collaboration from a given researcher. There were some confusion at the beginning but thanks to the discussion group, we found the clarification by the professor and the problem is solved. Another problem is conflicts during commits. I encountered several unsuccessful commits or updates due to these conflicts and merging the changes are usually quite complicated. Other than these, there are just some minor problems such as if we should use httpunit to validate the links and implementation detail of the method.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Problems encountered with group working:&lt;/strong&gt;&lt;br /&gt;It has been a very pleasant experience working with my groupmates Jared and Philip. We didn't encounter much problem with group working. However, sometimes it is a bit unclear as of who is working on which part. So one time I was working on a method but when I was almost done, I finally realized that my group mate has already started working a long way on that. So there was some communication problem but other than that, everything was great. I learned a lot from them, especially Jared who is a very good programmer and can always use the minimal lines of codes to achieve the same purpose. He has made our program very concise and easy to read.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Future improvements:&lt;/strong&gt;&lt;br /&gt;The issues have been a useful tool as it gives a clear outline of what else are yet to be done. I will stick to it in my future projects and I think breaking down the issues into more details might be more efficient and easier to assign work to members. &lt;br /&gt;&lt;br /&gt;Overall, this is not a very hard assignment but writing out good methods is another thing. There are many way to implement a method and we sometimes have to switch from return different type. I feel that we could have saved time if we agreed in the beginning what return type to use.&lt;br /&gt;&lt;br /&gt;This time, our group practiced pair programming for the first time and I found it very effective. My groupmates can spot my mistakes immediately and they pointed out errors in my Eclipse setting which I never recognized before. I come to appreciate pair programming as I never thought that having someone to watch me program would be so productive. If time allowed, I would love to practice more pair programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-6021779829020968705?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/6021779829020968705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=6021779829020968705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6021779829020968705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6021779829020968705'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/18-myisern-11.html' title='18. MyISERN-1.1'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-531495328645950043</id><published>2007-10-09T20:11:00.000-10:00</published><updated>2008-01-29T10:10:46.077-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>16. MyIsernReview</title><content type='html'>&lt;style type="text/css"&gt;.nobr br { display: none }&lt;/style&gt;&lt;br /&gt;Author reviewed: Chiao-Fen Zielinski&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;1. Installation Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;I downloaded the package from the link provided in her blog successfully. Installation went well. There was no instruction on how to execute the program but I was able to invoke "ant jar" from the command prompt to produce a jar file. After that, it wasn't difficult to figure out how to run the program as I could execute the program by "java -jar MyISERN-1-Orange.jar". The tables are produced as desired. Verify passed indicating JUnit, Checkstyle, PMD, and FindBugs tasks all passed too. Her team also achieved 100% Emma coverage. Good job!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;2. Code format and conventions review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;There are a few violations in the code:&lt;br /&gt;&lt;div class="nobr"&gt;&lt;br /&gt;&lt;table border="1"&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;File&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Lines&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Violation&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Comments&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt; MyIsernXmlLoader.java&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;48,49,50&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-38&lt;/td&gt;    &lt;br /&gt;&lt;td&gt; Document all private memberss &lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;MyIsernXmlLoader.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;206, 207, 208&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-36&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Use one-line comments to explain implementation details &lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;TestMyIsernXmlLoader.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;51&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-7&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Extra blank line between methods &lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;3. Test Case Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;Black box perspective:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Since the purpose of this assignment is to print out the tables based on data given in the 3 xml files, they have fulfilled this requirement. However, they seem to have misinterpreted the data in the colaborations.example.xml as there is only one collaboration item but they split up some data such as "collaborating-organizations" in two separate rows. This would cause confusion as users might mistake the second row as a separate item with missing fields. Since this is a mistake based on misinterpretation of data, even writing test cases could not have spotted that. Other than this, as printing out the data correctly is the only objective, I can't think of other test cases.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;White box perspective:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;They achieve 100% Emma coverage in all four areas, indicating that all codes has been covered at least once. They also have tests to make sure that the lists are returning the correct value which is nice. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#808080"&gt;Break da buggah:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;The methods to print out the tables are entirely tailored to the data given in this set. If the xml files are revised, such as by adding more items to the collaboration file, the table would fail to print out the new data.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="WHITE"&gt;4. Summary and Lessons Learned:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Writing test cases are useful for catching a lot of errors but they still have their limits. In this case, the problem is caused by misinterpretation of data which cannot by spotted by tests. This is when reviewing by another person is especially useful. Through this exercise, I learn about how useful it is to have someone review your code as sometimes you are limited by your perspective and cannot spot some trival minor errors. Also, by comparing their codes with my group's, I learn more about ways to test the main methods as I am quite clueless whenever it comes to writing tests for void methods. On the whole, her team did a good job on this assignment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-531495328645950043?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/531495328645950043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=531495328645950043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/531495328645950043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/531495328645950043'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/16-myisernreview.html' title='16. MyIsernReview'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-6891301104809822302</id><published>2007-10-08T01:13:00.000-10:00</published><updated>2008-01-29T10:10:46.077-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyIsern'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>15. MyIsern-1.0</title><content type='html'>This task was completed successfully and the link to the project page can be found &lt;a href="http://code.google.com/p/myisern-1-red/"&gt;here&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;JAXB&lt;/strong&gt;&lt;br /&gt;This is the first time I work with JAXB and I was confused by it at the beginning. The idea of converting XML data into java codes and vice versa is brilliant. A large portion of time I spent on this project was on reading about JAXB and XML so that I understand the idea of unmarshalling and marshalling. After knowing how JAXB linked XML and java, it was not difficult to come up with the methods to extract the data from XML and turn them into java tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XML&lt;/strong&gt;&lt;br /&gt;Compared to JAXB, I found XML schema easier to understand. It is basically the language for XML which allows user to define the structure and data types for XML files. However, for this assignment, I focused on learning about JAXB and haven't explored it in detail yet. Hopefully, as we move on with this MyISERN project, I will have more chances to work with it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Table implementation&lt;/strong&gt;&lt;br /&gt;At the start of the project, I expected the extraction of data from XML files would be the hardest part of this assignment but it turned out not as difficult as implementing a table in Java. Our group started out with no idea on implementing the table and decided to use JTable after doing some research online. The good thing about using this class is that GUI interface is possible which produced nicer result than simply printing out in text form. However, as we started implementing methods to print out JTables, we were presented with several problems such as table overriding each other. By doing some research online again, we were able to solve these problems and we are much more familiar with using JTable and its related classes now.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Jar file compiling&lt;/strong&gt;&lt;br /&gt;I didn't know how to enable a file to compile using command prompt before and thought it would be a difficult task. However, after reading through the build.xml from previous assignment I found that it is quite easy. I am comfortable with implementing it in my future assignments. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Emma&lt;/strong&gt;&lt;br /&gt;For this assignment, the data are given and we can not do anything to change them. As a result, a couple of try-catch and if statements can not be covered at all. We spent a while on figuring out how to get around this problem but concluded that there is nothing we can do without modifying the given data. Besides, I found myself more unwilling to spend time on Emma when it comes to testing void methods. This is because I don't see how useful it can be with assignments like this one where there are a lot of such methods. We can cover a large portion of the code by simply running the main method which is virtually doing no constructive testing at all.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SVN&lt;/strong&gt;&lt;br /&gt;I enjoyed using SVN in this project a lot. It is very convenient and efficient. However, I do encountered problems with it at the beginning when I updated the code. My group member was implementing the print table method in a very different way as mine. As a result, when I updated the code, I got a warning saying "one or more files are in a conflicted state." I have to go through quite a lot of troubles with merging the changes. Some parts of the codes cannot be merged without going through a lot of revision. In the end, I decided to follow my group member’s way to construct the method so that the conflict can be resolved. Other than that, my experience with SVN was pleasant.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Google project hosting&lt;/strong&gt;&lt;br /&gt;This is a powerful free service provided by google. I never imagined sharing a project to be so easy. I will absolutely stick to this project hosting service in the future.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Group software development&lt;/strong&gt;&lt;br /&gt;Working in a group is easier than working alone. Our group couldn't meet in person everyday but meeting online served the purpose well already. We were able to work on the code on our own, ask questions once we get into trouble instead of wasting a lot of time to figure it alone. Besides, working in group makes sure that there's someone to review your work and I learned most from it, especially by comparing my codes with theirs. For example, the way I generated the table was a bit complicated and my group member was able to come up with a simpler one. All in all, this is a nice group working experience. I guess the most important thing is making sure everyone is on the same pace so that we can work on the project together steadily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-6891301104809822302?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/6891301104809822302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=6891301104809822302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6891301104809822302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6891301104809822302'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/15-myisern-10.html' title='15. MyIsern-1.0'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-8463486346854123551</id><published>2007-10-08T00:30:00.001-10:00</published><updated>2008-01-29T10:10:46.078-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>14. CM practice</title><content type='html'>All three tasks are completed successfully. Verify passes but for some reasons, it takes more than 5 minutes to complete this ant task. The links to my project page and discussion groups are as follows:&lt;br /&gt;&lt;a href="http://code.google.com/p/webspider-kyleung/"&gt;WebSpier Project&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/stack-kyleung-discuss"&gt;Disucssion Group&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/stack-kyleung-svn"&gt;SVN Group&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Task 1:&lt;/strong&gt;&lt;br /&gt;I downloaded TortoiseSVN by googling it online. It is a popular software and doesn't take me long to find a suitable package to download. Installation was also straightforward.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Task 2:&lt;/strong&gt;&lt;br /&gt;The project was downloaded and I followed the instruction on the lecture notes. The instructions are detailed and I didn't encounter any problem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Task 3:&lt;/strong&gt;&lt;br /&gt;Again, the lecture notes were the most useful resources for this task. I followed it closely to go through all the steps with creating a new Google Hosting Project. Without the instructions on the lecture notes, I will probably have a hard time figuring how to set up the project. I was confused with how to set up the discussion groups at first as the lecture note is different from the website. But the instruction on the website is easy to follow and I didn't encounter further problems with setting up the discussion groups.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lesson learned:&lt;/strong&gt;&lt;br /&gt;This assignment explored me into SVN which is entirely new to me. Checking out new projects and committing changes are surprisingly convenient and fast. It would be very useful in group projects as programmers can share the changes they made easily and be always up-to-date with others' work on the project. It can avoid them from wasting time on working on the same part of codes simultaneously. I am also surprised at how easy it is to set up a Google Project page and that I am enjoying these services completely for free. Google has done a great work in creating this platform for programmers to share their work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-8463486346854123551?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/8463486346854123551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=8463486346854123551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8463486346854123551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/8463486346854123551'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/cm-practice.html' title='14. CM practice'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-4717523587845055392</id><published>2007-10-01T01:38:00.000-10:00</published><updated>2008-01-29T10:10:46.079-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>12. WebSpider review</title><content type='html'>&lt;style type="text/css"&gt;.nobr br { display: none }&lt;/style&gt;&lt;br /&gt;Reviewed Package Author: JianFei Liao&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="BROWN"&gt;1. Installation Review:&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;I downloaded JianFei's code and extracted it with ease. The installation also went well. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;Test results:&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;JUnit:&lt;/font&gt;&lt;/em&gt; the test runs with 2 failures. The failures are found in testFindTotalLinks and testFIndMostPopular.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;Checkstyle: &lt;/font&gt;&lt;/em&gt;the test runs successfully with no errors.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;PMD:&lt;/font&gt;&lt;/em&gt; the test runs successfully with no errors.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;FindBugs:&lt;/font&gt;&lt;/em&gt; the test runs successfully with no errors.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;Jar File Construction and execution:&lt;/font&gt;&lt;/em&gt; a jar file was built successfully. However, it was named named webspider.jar instead of webspider-jianfei.jar.&lt;br /&gt;&lt;br /&gt;I was able to invoke "java -jar webspider.jar -totallinks http://www.hackystat.org 100" and it returns 3257.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="brown"&gt;2. Code format and conventions review&lt;/font&gt;&lt;/strong&gt;&lt;div class="nobr"&gt;&lt;br /&gt;&lt;table border="1"&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;File&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Lines&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Violation&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Comments&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;WebSpiderExample.java&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;117,118, 254, *&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-7&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Unnessary blank lines within a method&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;TestWebSpiderExample.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;16,49,100&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-7&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Unnessary blank lines within a method&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;TestWebSpiderExample.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;19,20,21,*&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EFS-39&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Document all private members&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="brown"&gt;3. Test case review&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;Black box perspective:&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;All methods and classes in WebSpiderExample were tested in &lt;br /&gt;TestWebSpiderExample.java. However, two of the tests failed as indicated by JUnit.&lt;br /&gt;&lt;br /&gt;For the class WebItem, only increaseCounter() is tested while getCounter() and getLink() are only indirectly tested by calling the main method. &lt;br /&gt;&lt;br /&gt;No tests for boundary cases are included. It should consider checking the following cases:&lt;br /&gt;- crawling through 0 page&lt;br /&gt;- crawling through -1 page&lt;br /&gt;- crawling through 9999999999999 pages&lt;br /&gt;- entering an invalid URL such as http://hackystat&lt;br /&gt;- entering no URL&lt;br /&gt;- crawling through a page with no links&lt;br /&gt;&lt;br /&gt;The best test to do with this program is to create a test site so that we can compare the results. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;White box perspective:&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;Running Emma produces the following coverage summary:&lt;br /&gt;class:   100% (2/2)&lt;br /&gt;method:  100% (9/9)&lt;br /&gt;block:   79%  (476/602)&lt;br /&gt;line:    85%  (99/116)&lt;br /&gt;&lt;br /&gt;This indicates that some blocks and lines are not covered. This can be improved by adding the following test which crawl through more pages:&lt;br /&gt;    String[] testArgs7 = { totallinks, testStartUrl, "10", logging };&lt;br /&gt;    WebSpiderExample.main(testArgs7);&lt;br /&gt;By employing this, block and line coverages are improved to 81% and 90% respectively. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;font size="2" color="WHITE"&gt;Break da buggah:&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;I tried to invoke "java -jar webspider.jar -totallinks http://httpunit.org 9999999999999" but it returns the warning: "Argument for number of pages to crawl is not an integer." It also returns the invalid result "The total number of links discovered while crawling the first 0 pages accessible from http://httpunit.org is: 0".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3" color="brown"&gt;4. Summary and lessons learned&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Overall, this is a well-written program with throughout exception handling. Even though it is hard to determine if the program is returning the correct number of links, I tested it against Randy Cox's test site and it passed the test by returning the correct results. So it does a good job on that.&lt;br /&gt;&lt;br /&gt;Exceptions were handled well. I have tried to break the code with a lot of test cases like entering negative or decimal argument for pages to crawl, invalid URL, employ URL, URL with no links etc. The program manages to catch all the exception. However, no appropriate error messages are displayed. This is something that can be improved. I also tried to run the program with my friends' myspace and xanga account, google.com and a few other websites. I was actually surprised that it doesn't crash at all which indicate that he did a good job with exception handling. On the whole, this is a well-done program.&lt;br /&gt;&lt;br /&gt;From this exercise, I have learned that testing is important. When I did my assignment, I had no intention of implementing black box and white box perspective in my tests. After implementing them on reviewing other's code, I realize that this would make sure I was not testing randomly and to ensure maximum coverage of my tests. &lt;br /&gt;&lt;br /&gt;I also gained more experience with working with JUnit, PMD, Emma and Checkstyle. Even though I am still puzzled at times by how to ensure maximum coverage of Emma, I am at least more familiar with the other QA tools now. &lt;br /&gt;&lt;br /&gt;Further more, by comparing JianFei's code with mine. I realize that my code could be improved by removing some redundant codes. He employed a similar algorithm as mine but his was more organized and concise. This is what I have to work on with my code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-4717523587845055392?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/4717523587845055392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=4717523587845055392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4717523587845055392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4717523587845055392'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/10/12-webspider-review.html' title='12. WebSpider review'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-4375128227210863464</id><published>2007-09-25T21:29:00.001-10:00</published><updated>2008-01-29T10:10:46.079-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>WebSpider Improvement</title><content type='html'>Thanks to the time extension, I have time to review my code again. It looked fine to me when I completed it as I was probably too excited that I can finally go to bed in the end. When I look at my code again, I find that some of the methods are too long that it is complicated to read. Therefore, I improved my codes by creating other methods and declared some variables as global. I also added more comments. This way, it is easier to see how my program works. Other than that, formatting errors such as use of tabs are also corrected. Please find my refined code &lt;a href="http://www2.hawaii.edu/~kyleung/webspider-kyleung-1.0.1012.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have tried to work on the extra credit portion, but after playing around with the codes, throwing more exceptions and doing some research on the web. I still have no idea how to make it work and so I decided to drop it. &lt;br /&gt;&lt;br /&gt;This is the most challenging assignment by far. It took me a lot of time and efforts but I am glad that I have learned quite a lot from it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-4375128227210863464?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/4375128227210863464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=4375128227210863464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4375128227210863464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4375128227210863464'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/09/webspider-improvement.html' title='WebSpider Improvement'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-6597976612233754558</id><published>2007-09-24T04:09:00.000-10:00</published><updated>2008-01-29T10:10:46.079-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>11. WebSpider</title><content type='html'>All tasks are completed while the extra credit section is not attempted. My code can be found &lt;a href="http://www2.hawaii.edu/~kyleung/webspider-kyleung-1.0.924.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This turns out to be a more difficult task than I thought. First of all, there was the problem with JUnit. I didn't realize that the build.xml is incomplete and I wasted a lot of time on trying out different solution. It took me a long while until I finally find out what is wrong. This was frustrating but it gave me the opportunity to learn JUnit and Ant better.&lt;br /&gt;&lt;br /&gt;Secondly, there is the httpunit. I was confused with all the different classes and functions like WebRequest and WebResponse. I always end up using the wrong one or having to do a lot of conversion between different types before I can get what I wanted. Moreover, the program always run into different kind of errors when trying to opening the URLs. I have to solve these problems by throwing a lot of exceptions.&lt;br /&gt;&lt;br /&gt;Thirdly, there were no sample output and I didn’t know if the result I got is correct. This prohibited me from improving and correcting the program as I couldn’t tell how is my program doing. If I have more time, I would have build up a sample test page so that I can test my program on it.&lt;br /&gt;&lt;br /&gt;Fourthly, I have nevery used logging in Java but it was okay as I found some useful examples on the web.&lt;br /&gt;&lt;br /&gt;All in all, this is a challenging assignment. Through this assignment, I have explored Emma, JUnit, Ant, HttpUnit and Eclipse in greater detail. I wish I have started on this assignment earlier on so that I would have time to attempt the extra credit portion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-6597976612233754558?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/6597976612233754558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=6597976612233754558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6597976612233754558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6597976612233754558'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/09/11-webspider.html' title='11. WebSpider'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-7934720252770773012</id><published>2007-09-17T01:19:00.000-10:00</published><updated>2008-01-29T10:10:46.080-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>Stack and QA tools</title><content type='html'>Code: &lt;a href="http://www2.hawaii.edu/~kyleung/stack-kyleung.zip"&gt;click to download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All five tasks were completed successfully. &lt;br /&gt;&lt;br /&gt;Problems:&lt;br /&gt;I went into several problems in completing this assignment and the following two are the major ones.&lt;br /&gt;&lt;br /&gt;1. Eclipse&lt;br /&gt;Somehow, Eclipse fails to recognize my class files and keeps giving me errors saying that the classes Stack and ClearStack are undefined. It gives me the errors now and then even when I haven't made any changes to the code. After some frustrating moments of trying out different possible solutions, nothing worked until I tried renaming the package, thanks to the advice of Mike and Chaofien. It worked, no changes were made to the code and Eclipse can recognize the Stack classes again. However, minutes later, the same thing happens and again, the problem is solved by renaming the package. In the end, I end up renaming the packages whenever the problem came up. It was an unsophisticated solution but that was the only way I could solve the problem. Does anyone have a similar problem with Eclipse? I wonder if Eclipse is having a problem with compiling the project?&lt;br /&gt;&lt;br /&gt;2. JavaNCSS.Xml&lt;br /&gt;I have never worked with XML before and so completing the task was like learning a new language to me. I was lost in the beginning but by reviewing the other build.xml files, I was able to pick up on the format and syntax. Also, thanks to the discussions on Google group, some of the problems I went into were also solved. &lt;br /&gt;&lt;br /&gt;Ant and other QA tools:&lt;br /&gt;This is the first time I use Ant and I found it very handy. At first, it was very confusing as I was not familiar with the QA tools yet. So I just blindly followed the instructions on the assignment page and typed in the command lines without knowing exactly what each one is doing. It was only until I worked on task 2 and 3 that I learned more about PMD and Findbugs. PMD and Findbugs are both very useful debugging tools. They give a concise report on what and where the error is and provides suggestions to correct the problems. They are absolutely useful for debugging programs, especially for large projects where it would be time consuming and tedious to find out those minor errors.&lt;br /&gt;&lt;br /&gt;On the whole, I like Ant. It was a surprisingly useful and powerful build tool. It was also flexible in the way that it can incorporate so many different QA tools. Moreover, this would be especially useful in large projects where there would be so many classes and methods that we would be easy to lost track of. &lt;br /&gt;&lt;br /&gt;SCLC vs JavaNCSS:&lt;br /&gt;SCLC gives a count of comment, non-comment, blank and total lines on a variety of languages whereas JavaNCSS also give information about the size of a project but is only limited to Java. Since this class would be mainly dealing with Java, I would prefer JavaNCSS over SCLC as it could give more specific information such as a count on JavaDoc. &lt;br /&gt;&lt;br /&gt;This is by far the most demanding assignment I had so far. For we have to install and learn to use several QA tools and to write up a xml file for the first time. There were a lot to learn. However, this is also the most useful assignment as it familiarizes me with these essential debugging tools. I agree it would be better to learn them all in one time rather than one by one. This way, we can get start using them on our future assignments right on and polish our skills.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-7934720252770773012?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/7934720252770773012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=7934720252770773012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7934720252770773012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7934720252770773012'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/09/stack-and-qa-tools-code-click-to.html' title='Stack and QA tools'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-7441081554712924359</id><published>2007-09-05T03:47:00.000-10:00</published><updated>2008-01-29T10:10:46.080-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>CodeRuler Redux</title><content type='html'>After reading through my classmates’ codes, I found a few interesting and useful strategies and tried them on my codes. But I don’t see any significant improvement on the results, so I switched back to focusing on improving the strategies on Marcius and mine original code instead. &lt;br /&gt;&lt;br /&gt;The major changes are firstly, instead of having two groups that attack the castle and knights separately. I added a third, smaller group that attacks only the peasants. That is because killing a peasant is way easier than killing a knight. To win code-ruler, we don’t necessary have to capture all castles but to acquire the highest score. Since killing a peasant is easier with a score similar to that of killing a knight, it is rewarding to put in some labors into hunting after the peasants. &lt;br /&gt;&lt;br /&gt;Also, my peasants are quite good at claiming lands and I see that I don’t need too many of them. Therefore, after a specific number of peasants, the castles would just concentrate on producing knights to attack others. Besides, this would be good for scoring point as each knight counts twice the point as the peasants at the end of the game. &lt;br /&gt;&lt;br /&gt;Lastly, thanks to the review of Jianfei and Jeffrey, I have found and corrected all the java standard violations in the code. I also kept in mind to follow the java standard when inserting and modifying code, hopefully, this program will not contain any violations.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.hawaii.edu/~kyleung/marcius-kyleung.zip"&gt;The revised source code can be found here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Knowing that there is the “Big Match” in class tomorrow, I tested my code against 4 instead of just 1 sample ruler to see how it did. I did 4 test runs and it wins three of the matches. I hope that was not just a coincidence and that it will continue to do well in the match tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-7441081554712924359?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/7441081554712924359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=7441081554712924359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7441081554712924359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/7441081554712924359'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/09/coderuler-redux.html' title='CodeRuler Redux'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-6302270414877826423</id><published>2007-08-31T23:30:00.000-10:00</published><updated>2008-01-29T10:10:46.081-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Review'/><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>CodeRulerReview</title><content type='html'>&lt;style type="text/css"&gt;.nobr br { display: none }&lt;/style&gt;&lt;br /&gt;I was assigned to review Sonwright Gomex’s code. The code is well-organized and do not contain a lot of violations against the Java standard. It was commented well and was easy for me to follow along. I liked his strategy and he did a good job with the knights. All in all, this is a nicely written code and I had a good time reviewing it.&lt;br /&gt;&lt;br /&gt;&lt;div class="nobr"&gt;&lt;br /&gt;&lt;table border="1"&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;File&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Lines&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Violation&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Comments&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;MyRuler.java&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;10,11,185,*&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-6&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Comment line has more than 100 characters&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;MyRuler.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;12,17,25,*&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;ICS-SE-Java-6&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Comments hsould always end with a period&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;MyRuler.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;16,17,18,*&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;ICS-SE-Eclipse-2&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;Code should be indented 2 spaces instead of 4&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;MyRuler.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;16,172&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-5&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;The "else-if" should start on a new line&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;tr&gt;    &lt;br /&gt;&lt;td&gt;MyRuler.java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;193,201,210,*&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;EJS-76&lt;/td&gt;    &lt;br /&gt;&lt;td&gt;The "if" or "else" should always has curly braces&lt;/td&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-6302270414877826423?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/6302270414877826423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=6302270414877826423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6302270414877826423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/6302270414877826423'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/09/coderulerreview.html' title='CodeRulerReview'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-9188065974930023174</id><published>2007-08-29T04:10:00.000-10:00</published><updated>2008-01-29T10:10:46.081-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>Code Ruler Experience</title><content type='html'>Group members: Marcius Bagwan, Ka Yee Leung&lt;br /&gt;&lt;br /&gt;Source code: &lt;a href="http://www2.hawaii.edu/~kyleung/kyleung-marcius.zip"&gt;http://www2.hawaii.edu/~kyleung/kyleung-marcius.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Results:&lt;br /&gt;kyleung-marcius vs split-up: 631:201 480:327 792:224&lt;br /&gt;kyleung-marcius vs migrate: 880:0 774:7 823:0&lt;br /&gt;kyleung-marcius vs gang-up: 70:521 596:340 713: 178&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Strategy:&lt;br /&gt;Castle – It would alternate between generating a knight and a peasant. When the number of knights runs low, it will generate knights continuously.&lt;br /&gt;&lt;br /&gt;Knights – They are split into two groups. One group is specialized in attacking the knights while another is specialized in taking over castles. Once all castles has been taken over, both groups would attack knights together. If all enemy knights are gone, they would then aim at the peasants.&lt;br /&gt;&lt;br /&gt;Peasants – They would only move to land that are unclaimed or claimed by the enemies unless no such land are available.&lt;br /&gt;&lt;br /&gt;Lesson learned:&lt;br /&gt;Eclipse: I get much more familiar with Eclipse after working on this project. I am more similar with the debugging and how to utilize the different functions provided. I can’t imagine switching back to emacs to type up my program again where I could end up getting twenty error messages just because of a missing semi-colon.&lt;br /&gt;&lt;br /&gt;CodeRuler: This is the best programming assignment I have ever done. It was a lot of fun and was very effective in giving us a chance to practice with our java skill. It makes me realize how much Java can do and also, how much java I don’t know. CodeRuler is really a great and fun Java learning project.&lt;br /&gt;&lt;br /&gt;Working with another person: I am so grateful to have such a great partner, Marcius for this project. He is patient and helped me a lot. From him, I learned how to cooperate with others so that the whole group can work together and learn together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-9188065974930023174?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/9188065974930023174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=9188065974930023174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/9188065974930023174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/9188065974930023174'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/08/code-ruler-experience.html' title='Code Ruler Experience'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-4709042515228783417</id><published>2007-08-26T23:56:00.000-10:00</published><updated>2008-01-29T10:10:46.081-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>02.OSS.Experience</title><content type='html'>&lt;a href="http://bp2.blogger.com/_z4ds-sG-7n4/RtKg8WyFIKI/AAAAAAAAAAk/UFMQt_lWp_k/s1600-h/risk.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5103318286532419746" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_z4ds-sG-7n4/RtKg8WyFIKI/AAAAAAAAAAk/UFMQt_lWp_k/s400/risk.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;div align="left"&gt;The software I downloaded is &lt;a href="http://sourceforge.net/projects/jrisk/"&gt;Risk&lt;/a&gt;. It is the java version of the classic strategic board game. The goal of the game is to control all the territories by taking over territories from other players. This game employs a simple map format, supports 1 to multiple players, allows network play and works in all Operating Systems that have java 1.4 or higher.&lt;br /&gt;&lt;br /&gt;It fulfills the first Prime Directive by providing every features you can find in a typical Risk board game. Moreover, while you need at least two players to start the board game, this java version allows the user to play against the computer so that anyone can literally play Risk anytime alone. Also, there is the convenient Save and Load function so that users can save their unfinished game and play again at another time. However, it can improve on the Save function as it takes a long time to save a game. Other than that, it has done a great job in fulfilling the first Prime Directive.&lt;br /&gt;&lt;br /&gt;The second Prime Directive is satisfied to some extent. For experienced users, the installation would be easy for them as it only requires the usual downloading procedure: download the zip file, unzip it and run the program. However, for new users, they may find themselves at a lack of help as the readme file is not very useful without much information on installation. Upon unzipping the file, new users would likely to be lost in the long list of files to find the executable Jar file. This problem could have been improved by renaming the executable file as “run”.&lt;br /&gt;&lt;br /&gt;Finally, for the third Prime Directive, it is also partially satisfied. A zip file of the source codes comes along with the download package so anyone can access and modify them. However, not all files contain detailed documentation which makes it difficult to follow the code. I can imagine it would take me some time to understand and eventually modify the code.&lt;br /&gt;&lt;br /&gt;All in all, this game is well-written with a user-friendly interface. I enjoyed the game! I trust anyone should catch on to the game easily and have fun with it! Below are some screenshots from Risk: &lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5103319467648426178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_z4ds-sG-7n4/RtKiBGyFIMI/AAAAAAAAAA0/LKJp--d-_6o/s400/screenshot2.JPG" border="0" /&gt;the map&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5103320172023062738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_z4ds-sG-7n4/RtKiqGyFINI/AAAAAAAAAA8/oAUxvBtg-gE/s400/screenshot3.JPG" border="0" /&gt;&lt;br /&gt;&lt;div align="center"&gt;Roll the dice to determine whether an attack is successful&lt;/div&gt;&lt;div align="center"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-4709042515228783417?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/4709042515228783417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=4709042515228783417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4709042515228783417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/4709042515228783417'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/08/02ossexperience.html' title='02.OSS.Experience'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_z4ds-sG-7n4/RtKg8WyFIKI/AAAAAAAAAAk/UFMQt_lWp_k/s72-c/risk.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7548303198746745945.post-179093253912084880</id><published>2007-08-21T22:02:00.000-10:00</published><updated>2008-01-29T10:10:46.082-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ics 413'/><title type='text'>FizzBuzz</title><content type='html'>&lt;a href="http://bp1.blogger.com/_z4ds-sG-7n4/Rsv7_2yFIJI/AAAAAAAAAAc/4tZiYZW1ZB8/s1600-h/FizzBuzz.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5101448077383114898" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_z4ds-sG-7n4/Rsv7_2yFIJI/AAAAAAAAAAc/4tZiYZW1ZB8/s400/FizzBuzz.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;It took me 12 minutes to complete this program as I haven't used Eclipse for a long while and it took me some time to pick up on how to create new project and classes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The biggest problem that I encountered is the Java language itself. I have not programmed in Java for a while too and I am not surprised that I have mixed up Java and C languages' syntax completely. I ended up writing a logically correct but grammatically disastrous program. In this sense, Eclipse is very handy as it points out all the syntax mistakes I made and so I don't have to waste time to read through every line to find the bugs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From this experience, I learn that I shouldn't take any task lightly. Every program, no matter how unimportant and easy it may seem, should have been taken seriously. This is because in software engineering, every component has to be correct in order to produce a perfect software and a mistake in a small program can lead to serious bug in other programs. Also, I learn that I should familiarize myself with Eclipse and other programming software as it is impossible for a software engineer to take care of every little detail of a program and a good programming software would help a lot in this area.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7548303198746745945-179093253912084880?l=kayeeleung.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kayeeleung.blogspot.com/feeds/179093253912084880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7548303198746745945&amp;postID=179093253912084880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/179093253912084880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7548303198746745945/posts/default/179093253912084880'/><link rel='alternate' type='text/html' href='http://kayeeleung.blogspot.com/2007/08/fizzbuzz.html' title='FizzBuzz'/><author><name>Ka Yee Leung</name><uri>http://www.blogger.com/profile/09887056226417181087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_z4ds-sG-7n4/Rsv7_2yFIJI/AAAAAAAAAAc/4tZiYZW1ZB8/s72-c/FizzBuzz.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
