<?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-6356837882226393187</id><updated>2011-07-30T11:52:49.841-10:00</updated><title type='text'>Paul's Software Engineering Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-7307259272211735810</id><published>2010-04-27T00:17:00.009-10:00</published><updated>2010-04-27T02:02:39.206-10:00</updated><title type='text'>Kukui Cup Billboard:  Frame up, visuals in, a step up from mockup!</title><content type='html'>After drawing up the mock-ups for the Kukui cup billboard, we are now ready to implement our design ideas.  There were some changes regarding the &lt;a href="http://pmgaliza.blogspot.com/2010/04/kukui-cup-billboard.html"&gt;mock-ups&lt;/a&gt; such as combining the core visualizations into one page and to have them update on top of each other instead of showing three tables which then transitions to the other visualizations.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nJaBUpVdAj8/S9a-22jvgdI/AAAAAAAAADk/qRyN1dOXsuY/s1600/billbord-static.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 138px;" src="http://3.bp.blogspot.com/_nJaBUpVdAj8/S9a-22jvgdI/AAAAAAAAADk/qRyN1dOXsuY/s200/billbord-static.JPG" alt="" id="BLOGGER_PHOTO_ID_5464765047428317650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;A screen shot of our new visualization design.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;For this week, I played around with css.  I have not used css since learning it from ICS 101 so I did some research  since I felt a little rusty.  Nevertheless, my goal was to implement the rounded corners look for the visualizations.  After reviewing css from &lt;a href="http://www.w3schools.com/css/"&gt;w3cSchools&lt;/a&gt; and researching some example implementations, I felt ready to tackle this goal.  My initial research yielded different approaches.  Some used images of rounded corners and then render the four corners through html/css and on some with javascript.  But after researching some more I learned that the css3 implemented a &lt;a href="http://www.w3.org/TR/css3-background/#the-border-radius"&gt;'border-radius'&lt;/a&gt; property, that does exactly what I intend to do which is easier to implement and customize than the previous method.  This was done through css via &lt;code  style="font-size:12px;"&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:blue;"&gt;moz&lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:gray;"&gt;border&lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:gray;"&gt;radius&lt;/span&gt;&lt;/code&gt; property.  Since, as a group, we decided to use Firefox with the kiosk &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1568"&gt;plug-in&lt;/a&gt; as the browser to display the billboard, this accounts to the &lt;code  style="font-size:12px;"&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:blue;"&gt;moz&lt;/span&gt;&lt;/code&gt; in front of the property which will only render to a Firefox  browser.  There is another property, &lt;code  style="font-size:12px;"&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:blue;"&gt;webkit&lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:gray;"&gt;border&lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;&lt;span style="color:gray;"&gt;radius&lt;/span&gt;&lt;/code&gt;, which does the same rounded corners for Safari browsers.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nJaBUpVdAj8/S9bLYhvhBsI/AAAAAAAAADs/a5r1weY2Vcs/s1600/roundedcorners.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 163px;" src="http://4.bp.blogspot.com/_nJaBUpVdAj8/S9bLYhvhBsI/AAAAAAAAADs/a5r1weY2Vcs/s200/roundedcorners.JPG" alt="" id="BLOGGER_PHOTO_ID_5464778820095641282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Here is a screen-shot of the rounded corners implementation with some gradient added to the header.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Lastly, I also tried to implement the ticker tape.  The ticker tape is fed from the updates students submit such as commitments.  Since &lt;a href="http://edtmeyer.blogspot.com/2010/04/kukui-kup-continuous-display-what-to.html"&gt;Ed &lt;/a&gt;found a very good implementation of this function, &lt;a href="http://www.mioplanet.com/rsc/newsticker_javascript.htm"&gt;http://www.mioplanet.com/rsc/newsticker_javascript.htm&lt;/a&gt;, I simply implemented their script to our billboard.  What I like about this implementation besides its simplicity is that I can use css to apply the appropriate styles it requires to suit the look of our billboard.&lt;br /&gt;&lt;br /&gt;To see my implementation of the rounded corners, ticker tape and Jarret's updating visualization, click &lt;a href="http://kukuicup-billboard.googlecode.com/svn/branches/Paul/kukui-kup-billboard.html"&gt;here&lt;/a&gt;.&lt;br /&gt;Our project hosting site can be accessed &lt;a href="http://code.google.com/p/kukuicup-billboard/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-7307259272211735810?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/7307259272211735810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/kukui-cup-billboard-frame-up-visuals-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/7307259272211735810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/7307259272211735810'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/kukui-cup-billboard-frame-up-visuals-in.html' title='Kukui Cup Billboard:  Frame up, visuals in, a step up from mockup!'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://3.bp.blogspot.com/_nJaBUpVdAj8/S9a-22jvgdI/AAAAAAAAADk/qRyN1dOXsuY/s72-c/billbord-static.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-1128261335465972227</id><published>2010-04-19T23:58:00.008-10:00</published><updated>2010-04-20T02:18:14.358-10:00</updated><title type='text'>Kukui Cup Billboard</title><content type='html'>Just after finishing up our gauge, we move on to a new project.  We deviate from our usual Google gadgets and into something completely different, a status billboard.  Our job is to create a status billboard of updates happening during the &lt;a href="http://code.google.com/p/uh-dorm-energy-competition/"&gt;UH Dorm Energy Competition&lt;/a&gt;.  Our current task is to create mock-ups of the type of information we want to display and to do some initial research on how we are going to proceed.&lt;br /&gt;&lt;br /&gt;Here are some of our mock-ups.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nJaBUpVdAj8/S82VQAVAMKI/AAAAAAAAADM/1KZVMlYS5Qo/s1600/OverallKukuiNutsStandings.jpg"&gt;&lt;img style="cursor: pointer; width: 200px; height: 100px;" src="http://4.bp.blogspot.com/_nJaBUpVdAj8/S82VQAVAMKI/AAAAAAAAADM/1KZVMlYS5Qo/s200/OverallKukuiNutsStandings.jpg" alt="" id="BLOGGER_PHOTO_ID_5462186025268818082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;This shows the Kukui Nut standing for participating dorms, its floors and its residents.  It also shows the static title header and the ticker tape in the footer.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nJaBUpVdAj8/S82VVQPY_kI/AAAAAAAAADU/7tWvdWhlSTY/s1600/Prizes.jpg"&gt;&lt;img style="cursor: pointer; width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_nJaBUpVdAj8/S82VVQPY_kI/AAAAAAAAADU/7tWvdWhlSTY/s200/Prizes.jpg" alt="" id="BLOGGER_PHOTO_ID_5462186115439590978" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try  {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nJaBUpVdAj8/S82VZNx43aI/AAAAAAAAADc/OcwzaUD8OI0/s1600/TipOfTheDay.jpg"&gt;&lt;img style="cursor: pointer; width: 200px; height: 100px;" src="http://4.bp.blogspot.com/_nJaBUpVdAj8/S82VZNx43aI/AAAAAAAAADc/OcwzaUD8OI0/s200/TipOfTheDay.jpg" alt="" id="BLOGGER_PHOTO_ID_5462186183498456482" border="0" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;div style="text-align: center;"&gt;&lt;br /&gt;The contest prizes, tip of the day, and upcoming events.  The today's event are meant to explain the who, what, where and when of  the said event.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Besides creating mock-ups, we also did some research on the different things we're going to be using for this project.  Since the billboard will be entirely web base, we decided to use javascript, html and css for ease of use.  We initially decided on using Chrome to view our billboard in full screen after our initial testing with Firefox but we learned that our Firefox's full screen mode showed a little bar on top.  So Jarret started looking around and found a &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1568"&gt;plug-in&lt;/a&gt; for Firefox that fixes this problem and so we will be using Firefox instead.&lt;br /&gt;&lt;br /&gt;Our goal for next week is to start implementing our mock-ups and any changes made to it.  Our project hosting site can be accessed &lt;a href="http://code.google.com/p/kukuicup-billboard/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-1128261335465972227?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/1128261335465972227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/kukui-cup-billboard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1128261335465972227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1128261335465972227'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/kukui-cup-billboard.html' title='Kukui Cup Billboard'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://4.bp.blogspot.com/_nJaBUpVdAj8/S82VQAVAMKI/AAAAAAAAADM/1KZVMlYS5Qo/s72-c/OverallKukuiNutsStandings.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-2788029530733862452</id><published>2010-04-13T02:16:00.006-10:00</published><updated>2010-04-13T04:17:56.966-10:00</updated><title type='text'>My 3rd gadget for the 3rd milestone.</title><content type='html'>Our team just finished our 3rd gadget for our project, &lt;a href="http://code.google.com/p/stoplightgadget/"&gt;Stoplight&lt;/a&gt;, &lt;a href="http://code.google.com/p/wattdepot-ui-monitorgadget/"&gt;Monitor&lt;/a&gt;, and lately, the &lt;a href="http://code.google.com/p/wattdepot-ui-googlegadgets/"&gt;Gauge&lt;/a&gt;.  The gauge gadget works like the other gadgets we've created but combines the different properties into one.  The stoplight's thresholds and the monitor's Wattdepot implementation both find its way to the gauge's properties.  The gauge displays Wattdepot energy related information using a user inputted host URL and a source and also uses the gauge visualization's  option to add coloring to display threshold.  Here is a screen shot of our gauge gadget.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wattdepot-ui-googlegadgets.googlecode.com/svn/wiki/Gauge/gauge.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 255px; height: 192px;" src="http://wattdepot-ui-googlegadgets.googlecode.com/svn/wiki/Gauge/gauge.png" alt="" border="0" /&gt;&lt;/a&gt;Some of the new properties we've added on top of the previous version is the addition of the host URL field for the gadget settings, the data type and time stamp showing below the gauge, the units showing inside the gadget and the title on the gadget's heading.  My job for the latest version is to implement the host url requirement and replace the data-type with the units that is shown within the gadget.  I had to search for the right implementation from the visualization &lt;a href="http://gwt-google-apis.googlecode.com/svn/javadoc/visualization/1.0/index.html"&gt;API&lt;/a&gt; in order to the add the units.&lt;br /&gt;&lt;br /&gt;During our gauge development we didn't really have any problems it since my last &lt;a href="http://pmgaliza.blogspot.com/2010/04/wattdepot-gauge-gadget.html"&gt;post&lt;/a&gt;.  I am still using Eclipse to edit the xml files.  Other than that we didn't have any problems with the development of this gadget.&lt;br /&gt;&lt;br /&gt;As for improvements, we are planning on adding basic error checking for the setting fields. We are also planning on making a better user experience by turning the host URL field into a drop down menu with the appropriate Wattdepot servers and do the same with the source list. &lt;br /&gt;Our updated project host can be accessed &lt;a href="http://code.google.com/p/wattdepot-ui-googlegadgets/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-2788029530733862452?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/2788029530733862452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/my-3rd-gadget-for-3rd-milestone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2788029530733862452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2788029530733862452'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/my-3rd-gadget-for-3rd-milestone.html' title='My 3rd gadget for the 3rd milestone.'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3217156996217486215</id><published>2010-04-06T02:29:00.004-10:00</published><updated>2010-04-06T03:33:55.869-10:00</updated><title type='text'>Wattdepot Gauge Gadget</title><content type='html'>After last week's initial preparation of the &lt;a href="http://pmgaliza.blogspot.com/2010/03/gauge-gadget.html"&gt;gauge gadget&lt;/a&gt; we are to implement and retrieve data from &lt;a href="http://code.google.com/p/wattdepot/"&gt;Wattdepot&lt;/a&gt;.  This was not really a huge problem for us since we integrated wattdepot for the &lt;a href="http://code.google.com/p/wattdepot-ui-monitorgadget/"&gt;monitor gadget&lt;/a&gt; we created for the 2nd milestone.  This task was delegated to me and Jarret the threshold and refresh.&lt;br /&gt;&lt;br /&gt;The biggest problem that we had while working on this project was debugging our code.  Both Jarret and I tried to find the problem as to why our gadget won't load the gauge visualization.  After looking through the code for 3 hours we found out the problem and it was a typo.  We were passing a different &lt;span style="font-style: italic;"&gt;div id&lt;/span&gt; as a parameter from our &lt;span style="font-style: italic;"&gt;div tag's id&lt;/span&gt;.  This just shows our real need for a better editor and a better way on running our gadget for testing purposes.  We had to commit to our trunk every time we need to correct our code no matter how minute.  I am currently using Eclipse with the basic plug-in for xml to edit the gadget.  This was problem was really not a big deal since it was meant for testing purposes.  I started out with a requirement to enter the whole data source url as to test our gadget's ability to retrieve from a source, google spreadsheet.  The div tag was later replaced by a different id later on when I implemented wattdepot, which only requires a source string not the url.&lt;br /&gt;&lt;br /&gt;During our 3 hour mishaps we sifted through the code trying to figure out what was wrong.  It was a good opportunity for me to learn more about the gauge visualization and also by looking through the &lt;a href="http://gwt-google-apis.googlecode.com/svn/javadoc/visualization/1.0/index.html"&gt;visualization api&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nJaBUpVdAj8/S7s2IcJxA0I/AAAAAAAAAC8/8LA3PsMwEEo/s1600/wattdepotgauge.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 156px;" src="http://4.bp.blogspot.com/_nJaBUpVdAj8/S7s2IcJxA0I/AAAAAAAAAC8/8LA3PsMwEEo/s200/wattdepotgauge.JPG" alt="" id="BLOGGER_PHOTO_ID_5457014892113494850" border="0" /&gt;&lt;/a&gt;Here is a screen shot of our Wattdepot Gauge Gadget with the Kailua House as its source and monitoring the power consumed of the said source.  Our host site can be accessed &lt;a href="http://code.google.com/p/wattdepot-ui-googlegadgets/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3217156996217486215?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3217156996217486215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/wattdepot-gauge-gadget.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3217156996217486215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3217156996217486215'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/04/wattdepot-gauge-gadget.html' title='Wattdepot Gauge Gadget'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://4.bp.blogspot.com/_nJaBUpVdAj8/S7s2IcJxA0I/AAAAAAAAAC8/8LA3PsMwEEo/s72-c/wattdepotgauge.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-5225587378416376908</id><published>2010-03-30T02:09:00.001-10:00</published><updated>2010-03-30T05:06:34.220-10:00</updated><title type='text'>Gauge Gadget</title><content type='html'>For our new project, we are still working with gadgets but this time  around, we are to use advance google visualization tools.  The  visualization that was delegated to our group is the gauge  visualizations.  Our first objective for this project is to get a simple  gauge visualization working with hardcoded data to be evaluated and  then create a gadget based on the that visualization.  Other things that  we had to do include when creating the gadget is to create a common  look and feel for all the gadgets in the iGoogle page.  Since we cant  change other google gadgets' look, such as gmail,  we are basing the  look for our gadgets with those look.  Prof. Johnson suggested that we  install other google gadgets along with our gadgets to create the common  look.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();}  catch(e) {}" href="http://3.bp.blogspot.com/_nJaBUpVdAj8/S7IOb2HjaQI/AAAAAAAAAC0/cnoJ_bXNrKE/s1600/gaugegadget.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 140px;" src="http://3.bp.blogspot.com/_nJaBUpVdAj8/S7IOb2HjaQI/AAAAAAAAAC0/cnoJ_bXNrKE/s200/gaugegadget.JPG" alt="" id="BLOGGER_PHOTO_ID_5454437970245544194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Some  of the things that we are going to be working on is to decide what of  information to use for the gauge.  Another would be to fix the problem  of overlapping gauges.  The overlap occurs whenever the gadget size is  adjusted.&lt;br /&gt;&lt;br /&gt;Our project hosting site can be accessed &lt;a href="http://code.google.com/p/wattdepot-ui-googlegadgets/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-5225587378416376908?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/5225587378416376908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/03/gauge-gadget.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/5225587378416376908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/5225587378416376908'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/03/gauge-gadget.html' title='Gauge Gadget'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://3.bp.blogspot.com/_nJaBUpVdAj8/S7IOb2HjaQI/AAAAAAAAAC0/cnoJ_bXNrKE/s72-c/gaugegadget.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-8162330862626334415</id><published>2010-03-09T00:25:00.013-10:00</published><updated>2010-03-09T03:18:03.113-10:00</updated><title type='text'>Two on Two:  2 Gadgets for 2nd Milestone</title><content type='html'>For our second milestone, our group has finished two gadgets.  The &lt;a style="font-style: italic;" href="http://code.google.com/p/stoplightgadget/"&gt;Stoplight gadget&lt;/a&gt;, which is a universal gadget that takes a user input source and displays a stoplight image based on the a given threshold, and the &lt;a style="font-style: italic;" href="http://code.google.com/p/wattdepot-ui-monitorgadget/"&gt;Wattdepot-ui-monitorgadget&lt;/a&gt;, which is a monitor that connects to the &lt;a style="font-style: italic;" href="http://code.google.com/p/wattdepot/"&gt;Wattdepot&lt;/a&gt; web service and displays the power/energy consumed and the power/energy generated of a given source.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Stoplight Gadget&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nJaBUpVdAj8/S5ZBgGi8qII/AAAAAAAAACk/Bv8nkQ1Fm-k/s1600-h/version_1_6.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 197px; height: 200px;" src="http://1.bp.blogspot.com/_nJaBUpVdAj8/S5ZBgGi8qII/AAAAAAAAACk/Bv8nkQ1Fm-k/s200/version_1_6.png" alt="" id="BLOGGER_PHOTO_ID_5446612819120007298" border="0" /&gt;&lt;/a&gt;Features&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Automatic refresh&lt;/li&gt;&lt;li&gt;Title feature&lt;/li&gt;&lt;li&gt;Customizable image size&lt;/li&gt;&lt;li&gt;Able to parse both integers and decimal values&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Error handling&lt;/li&gt;&lt;/ul&gt;Version 1.7 is the latest version of stoplight gadget.  The most prominent feature of this version is the automatic refresh is much cleaner.  During our meeting with Prof. Johnson, he noticed that our gadget will look a little more professional if our gadget refreshes only the relevant and dynamic information.  As in the case for our stoplight gadget, the image, data and the message.  These dynamic information will only refresh whenever the image or the data changes and the rest will stay the same .  This means that we don't have to refresh all the information whenever one changes.  It also eliminates the spinner icon for each information, which appears when the gadget retrieves data.  Other functions include the adjustment of the gadget height.  This was an aesthetic modification because our gadget allows users to change the image size and when the image is set to small there are extra whitespace below the message.  Lastly, we changed the location of the gadget title from the gadget window itself to the top center section of the gadget main display frame.&lt;br /&gt;For the full list of all the features visit our &lt;a href="http://code.google.com/p/stoplightgadget/wiki/ReleaseNotes"&gt;ReleaseNotes&lt;/a&gt; wiki.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Wattdepot-ui-monitorgadget&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nJaBUpVdAj8/S5ZDPVGKr7I/AAAAAAAAACs/fmK8GQj0l3I/s1600-h/wattdepotExample.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 176px; height: 200px;" src="http://4.bp.blogspot.com/_nJaBUpVdAj8/S5ZDPVGKr7I/AAAAAAAAACs/fmK8GQj0l3I/s200/wattdepotExample.JPG" alt="" id="BLOGGER_PHOTO_ID_5446614729991303090" border="0" /&gt;&lt;/a&gt;Features&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Automatic refresh&lt;/li&gt;&lt;li&gt;Able to connect to Wattdepot web service&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Error handling&lt;/li&gt;&lt;/ul&gt;For our latest version of the &lt;span style="font-style: italic;"&gt;Wattdepot &lt;/span&gt;monitor, we also implemented the new refresh function explained in the Stoplight section above.  This feature is much more prominent in the &lt;span style="font-style: italic;"&gt;Wattdepot &lt;/span&gt;monitor since each of the information displayed is a result of the retrieval of the proper data to be displayed.  From the source name to the last checked time stamp, the spinner icon always shows up for each information displayed which turned out to be an eye sore.  For the my milestone contribution, I added the error messages to be displayed as part of my error handling.  One of the problems I encountered is the appearance of the spinner icon along with my error messages.  This gives the user  a false sense of anticipation for more information to show up.  The solution to the problem is the implementation of the new refresh function itself.  Since my error message is due to a missing user input, other information that needs to be displayed might be dependent to the missing input and therefore will show the spinner icon to no effect.&lt;br /&gt;Since we only worked on the &lt;span style="font-style: italic;"&gt;Wattdepot &lt;/span&gt;monitor for only a month, we only have 2 versions being version 1.2 as the latest. &lt;br /&gt;&lt;br /&gt;After the 2nd milestone presentation, we are to change our group project for the second half of the semester.  We had a chance to change project after the 1st milestone but I enjoyed creating gadgets that I stayed in this project.  The group isn't decided yet but this is the reason why I signed up for the HEEP gadget team for the 3rd milestone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-8162330862626334415?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/8162330862626334415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/03/two-on-two-2-gadgets-for-2nd-milestone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8162330862626334415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8162330862626334415'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/03/two-on-two-2-gadgets-for-2nd-milestone.html' title='Two on Two:  2 Gadgets for 2nd Milestone'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://1.bp.blogspot.com/_nJaBUpVdAj8/S5ZBgGi8qII/AAAAAAAAACk/Bv8nkQ1Fm-k/s72-c/version_1_6.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-1335199730219715062</id><published>2010-03-02T01:16:00.006-10:00</published><updated>2010-03-02T02:16:59.382-10:00</updated><title type='text'>Never say never: Improving Stoplight Gadget</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;We are closing in on our 2nd milestone , this day next week, and we are  in confident on finishing the two gadgets in time.  For this week, we are still working on the Stoplight gadget, a continuous work of improvement, as well as the Wattdepot gadget.  The Stoplight gadget had a major rework in terms of the formatting of the data it retrieves from.  During our weekly meeting, we agreed that our &lt;a href="http://stoplightgadget.googlecode.com/svn/tags/Gadget_1_4/message_visualization.js"&gt;&lt;span style="font-style: italic;"&gt;messageSourceUrl&lt;/span&gt; &lt;/a&gt;formatting was too error prone from the user end. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nJaBUpVdAj8/S4z8ZJAwY1I/AAAAAAAAABs/fdjWanoRkP8/s1600-h/messageFormat.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 138px;" src="http://3.bp.blogspot.com/_nJaBUpVdAj8/S4z8ZJAwY1I/AAAAAAAAABs/fdjWanoRkP8/s200/messageFormat.JPG" alt="" id="BLOGGER_PHOTO_ID_5444003558430106450" border="0" /&gt;&lt;/a&gt;A user might get confused on setting the upper and lower bounds that relates to the corresponding message to be displayed.  Our solution is to create a new format.  This new format differs by having two columns, one to include the integer values to be evaluated and the other with the corresponding messages. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nJaBUpVdAj8/S4z8e9q48fI/AAAAAAAAAB0/BhHZwwcUq-g/s1600-h/message_source.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 137px;" src="http://2.bp.blogspot.com/_nJaBUpVdAj8/S4z8e9q48fI/AAAAAAAAAB0/BhHZwwcUq-g/s200/message_source.png" alt="" id="BLOGGER_PHOTO_ID_5444003658464817650" border="0" /&gt;&lt;/a&gt;A significant feature are the empty spaces to visually show the upper and lower bounds of the values to be evaluated.  In conjunction with the format change,  we also stopped parsing the value as integers and instead parsed them as floats to better represent values a user might use which includes decimal values.  Jarret created an updated message script to facilitate these changes.  The updated script can be seen &lt;a href="http://stoplightgadget.googlecode.com/svn/tags/Gadget_1_6/message_visualization.js"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As for the Wattdepot gadget, the main improvement we did was that we've successfully got our gadget to connect to the Wattdepot server.  We are mainly using tests information gathered from Wattdepot.  Other changes includes changing the source into a user input source instead of drop down menu, lowering the retrieve interval from minutes to seconds and including the source and the type of data in the gadget itself.  The type of data that a user can choose from are Power Generated, Energy Consumed, Power Generated, Power Consumed.  The data types' description can be accessed to &lt;a href="http://code.google.com/p/wattdepot/wiki/PropertyDictionary"&gt;Wattdepot's&lt;/a&gt; site.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nJaBUpVdAj8/S4z_5pPy0aI/AAAAAAAAAB8/16nbgnfDDPE/s1600-h/wattdepotExample.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 181px;" src="http://3.bp.blogspot.com/_nJaBUpVdAj8/S4z_5pPy0aI/AAAAAAAAAB8/16nbgnfDDPE/s200/wattdepotExample.JPG" alt="" id="BLOGGER_PHOTO_ID_5444007415373812130" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-1335199730219715062?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/1335199730219715062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/03/never-say-never-improving-stoplight.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1335199730219715062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1335199730219715062'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/03/never-say-never-improving-stoplight.html' title='Never say never: Improving Stoplight Gadget'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://3.bp.blogspot.com/_nJaBUpVdAj8/S4z8ZJAwY1I/AAAAAAAAABs/fdjWanoRkP8/s72-c/messageFormat.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-2820816845656986508</id><published>2010-02-22T22:15:00.002-10:00</published><updated>2010-02-22T23:03:57.520-10:00</updated><title type='text'>New gadget! Wattdepot Gadget</title><content type='html'>For this assignment we start a new gadget but we also worked on polishing our &lt;a href="http://code.google.com/p/stoplightgadget/"&gt;Stoplight gadget&lt;/a&gt;.  The main thing we had to do is to give a user choice on what size the image is shown.  This was the solution we came up with since we couldn't get the scalable image working within the gadget.  Some other things we did was to add a 'title' input to personalize the gadget.  We also had to a few typos and completed information to our gadget and our project hosting site's user guides, which Robert pointed out. &lt;br /&gt;&lt;br /&gt;In conjunction with polishing the Stoplight gadget, we also are to create a new gadget that retrieves data from Wattdepot.  &lt;a href="http://code.google.com/p/wattdepot/"&gt;Wattdepot&lt;/a&gt; is an electric database that we used for last semester's projects such as the &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/36-oscarwebappv2-0?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;Oscar web applications&lt;/a&gt; and the resulting &lt;a href="http://code.google.com/p/ecologineers/"&gt;Ecologineers&lt;/a&gt; web application.   This gadget retrieves information from a source and displays a set of data which can be anything from current power use to overall power consumption.  These are information are displayed after filling out the required information such as the source, refresh rate, and the type of data.  The main information that is to be displayed consists of the power (kW) and a time stamp of the current refresh and the the last checked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-2820816845656986508?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/2820816845656986508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/new-gadget-wattdepot-gadget.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2820816845656986508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2820816845656986508'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/new-gadget-wattdepot-gadget.html' title='New gadget! Wattdepot Gadget'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-6471863670785879854</id><published>2010-02-15T23:58:00.010-10:00</published><updated>2010-02-16T01:22:59.768-10:00</updated><title type='text'>Stoplight Gadget 1.4</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nJaBUpVdAj8/S3qABiTsGHI/AAAAAAAAABk/SqpTH3SWuac/s1600-h/stoplight_all.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 174px; height: 200px;" src="http://3.bp.blogspot.com/_nJaBUpVdAj8/S3qABiTsGHI/AAAAAAAAABk/SqpTH3SWuac/s200/stoplight_all.jpg" alt="" id="BLOGGER_PHOTO_ID_5438800263880906866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Stoplight Gadget version 1.4 is the last version that our group is going to work on.  Our meeting with Prof. Johnson last week has resulted in the introduction of a new gadget idea.  It was only an idea so we didn't go into details and so the meeting shifted into how our group is going to finish up the Stoplight Gadget and get it ready for publication.   I thought that this was a good idea since I feel that if we added more functionality to our gadget it beats the purpose of  having a gadget that is easy to use, returns a concise information to the user and most importantly keeping it clean and uncluttered.  For our final version, it is mostly about three issues that we've discussed which are error handling, unit addition, and the stoplight image.  The stoplight image is still one of the problems since we tried to have a scalable image in order to accommodate users with lower resolution screens.  Some other things we talked about in the meeting is the addition of better message and mainly the addition of the units.&lt;br /&gt;&lt;br /&gt;The error handling issue, which was delegated as my job, was to add a text error messages to be displayed whenever a user input and data source errors arise.  The process was not that hard but it took me a long time to finish it and go through my initial testing.  It was mainly because of how I edited my code locally and then commit the changes through &lt;span style="font-style: italic;"&gt;SVN&lt;/span&gt; and lastly test inputs through &lt;span style="font-style: italic;"&gt;iGoogle&lt;/span&gt; with the gadget editor.  This is one of the more frustrating time for me since I know that there are alternatives out there such as Google's own deskstop application.  This is something I am highly considering in regards to working for the next gadget project.&lt;br /&gt;&lt;br /&gt;Even though this is going to be the last version that we've worked on, I know that this project will never be labeled as finished.  The Stoplight Gadget project will be an ongoing project to improve not only because it will be published but a way to showcase this as my accomplishment for possible employers.&lt;br /&gt;&lt;br /&gt;Our project Hosting site can be accessed &lt;a href="http://code.google.com/p/stoplightgadget/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-6471863670785879854?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/6471863670785879854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/stoplight-gadget-14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/6471863670785879854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/6471863670785879854'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/stoplight-gadget-14.html' title='Stoplight Gadget 1.4'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://3.bp.blogspot.com/_nJaBUpVdAj8/S3qABiTsGHI/AAAAAAAAABk/SqpTH3SWuac/s72-c/stoplight_all.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-7441939051641065682</id><published>2010-02-08T23:12:00.003-10:00</published><updated>2010-02-09T03:21:46.565-10:00</updated><title type='text'>Google Gadget:  1st Milestone</title><content type='html'>For our first milestone, we are to present a working and professional looking gadget that is simple but useful.  Our version &lt;a href="http://code.google.com/p/stoplightgadget/"&gt;1.3 Stoplight gadget&lt;/a&gt; is our project's first milestone.  The gadget's functions include automatic refresh and threshold related messages, other functions that was implemented from the past versions include stoplight image, user inputted data source and threshold values.  The stoplight messages is something that Yichi and I worked on and it was a little hard.  After some research, we learned that the the gadget can only send and receive one query at a time so our solution was to separate the gadget query for the data and messages.  Two script files, one for to display the stoplight image and the other to display the message, were created as a solution.  Some other enhancements are purely aesthetic enhancements and it includes a better stoplight image and a drop down menu for the required input fields.&lt;br /&gt;&lt;br /&gt;Since we've built our gadget by adding new functions on top of older ones for each version, I find that working on this first milestone project was fairly easy.  The things that we've worked on  most is improving the functions from the old versions and then implementing the new ones that we decided should encompass version 1.3.  Such is the case with our stoplight image.  During our meeting with Prof. Johnson, he told us that we needed a better image, one that shows the different colors clearly and resembles a real stoplight for a professional look.  Other things we had to do was a major organizations of our files.  Having the 'trunk' directory contain only the latest source codes, 'branches' as our individual repositories, and 'tags' which contains our gadget's past versions.  We also had to improve the Stoplight Gadget site to reflect upon the changes we've made and to add user and developer guides.&lt;br /&gt;&lt;br /&gt;After this first milestone we are planning on continuing with this project.  For our next version we are shooting for the inclusion of error handling, scalable stoplight, and also maybe implement the 'plug' images from the HEEP project.  I had a great time working on this project with my team.  We always try and meet up at least twice a week which helped us delegate jobs easier and to keep us on track.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-7441939051641065682?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/7441939051641065682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/google-gadget-1st-milestone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/7441939051641065682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/7441939051641065682'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/google-gadget-1st-milestone.html' title='Google Gadget:  1st Milestone'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3158307100834039580</id><published>2010-02-02T00:53:00.003-10:00</published><updated>2010-02-02T01:45:53.560-10:00</updated><title type='text'>Stoplight Gadget 1.2, a leap from 1.0</title><content type='html'>For this week's gadget version, we've managed to combine two version functions into one, hence the leap from 1.0 to 1.2.  We have combined two similar functions that we seemed easy to do so.  Our initial meeting with Prof. Johnson had resulted in the split of these function into different version.  The two functions are user input data source and the threshold values.  Some of the other things we have accomplished is the addition of the stoplight image itself.  Since we only have to display the stoplight for different threshold values it was fairly easy to implement the stoplight. &lt;br /&gt;&lt;br /&gt;My task for the combined version was to do the user input threshold values, but since we decided to combine it this job fell into Yichi's hands since he was doing the other function, mainly the input data source.  My new job was to research for a solution to a problem that we've encountered during our implementation of the new functions.  We needed to find a better way to access our script and xml files because they were saved from Yichi's Unix account.  We initially tried to gain access to these files through our &lt;a href="http://code.google.com/p/stoplightgadget/"&gt; Stoplight Gadget&lt;/a&gt; project hosting site.  We have presented the problem to our weekly meeting with Professor Johnson and they have provided us with the best information to solving our problem.  They have suggested that we needed to change the &lt;span style="font-family: courier new;"&gt;svn:mime-type&lt;/span&gt; of the files were trying to access.   It turns out that Prof. Johnson had encountered such similar problem and has written a  &lt;a href="http://philipmjohnson.blogspot.com/2007/05/how-to-browse-html-correctly-from-svn.html"&gt;blog entry&lt;/a&gt; about it.  The posting was very helpful but a reply to the posting helped me directly with my problem.  It links to a different project hosting site called &lt;a href="http://code.google.com/p/flexlib/wiki/HowToBuild"&gt;Flexlib&lt;/a&gt; and within its Wiki pages they explained how to access the SVN &lt;span style="font-family: courier new;"&gt;config&lt;/span&gt; to enable &lt;span style="font-family: courier new;"&gt;auto-props&lt;/span&gt;  and provided a list of file format values.&lt;br /&gt;&lt;br /&gt;After finding out how &lt;span style="font-family: courier new;"&gt;mime-type&lt;/span&gt; works, we have discovered anther way we can access our scripts withing Google project hosting and without changing the properties of the file.  When browsing the files in the source, there is a link to the view the raw file in the right details panel.  This is the easiest way for us to link the our scripts url with the gadget. &lt;br /&gt;&lt;br /&gt;Next week will be our first milestone for our Stoplight Gadget and we hope to be able to have a version ready for release.  Some of the function that we'll be working on are the addition of messages that interprets what the stoplight is showing or to return errors, scalable image and error handling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3158307100834039580?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3158307100834039580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/stoplight-gadget-12-leap-from-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3158307100834039580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3158307100834039580'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/02/stoplight-gadget-12-leap-from-10.html' title='Stoplight Gadget 1.2, a leap from 1.0'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-1388722290419061214</id><published>2010-01-25T20:17:00.007-10:00</published><updated>2010-01-25T21:56:47.827-10:00</updated><title type='text'>Stoplight Gadget v1.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www2.hawaii.edu/%7Epaulmark/stoplightyellow.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 93px; height: 197px;" src="http://www2.hawaii.edu/%7Epaulmark/stoplightyellow.jpg" alt="" border="0" /&gt;&lt;/a&gt;This week's accomplishment included a finished Stoplight Gadget version 1.0 and a project hosting site called &lt;a href="http://code.google.com/p/stoplightgadget/"&gt;&lt;span style="font-style: italic;"&gt;Stoplight Gadget&lt;/span&gt;&lt;/a&gt;.  Version 1.0 is just our starting point for the whole project which is mostly about setting up the requirements and getting a feel of the basic functions.  Our group meeting with Prof. Johnson has been the most significant part of this and last week's work.  The meeting clarified all the gray areas about this project.  First, we learned that our stoplight is supposed to be a general stoplight that people can download and use with relative ease.  We initially thought that our stoplight is about Wattdepot and therefore constrained by it's functions; A stoplight that bear some similarity with last semester's &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/36-oscarwebappv2-0"&gt;Oscar WebApp&lt;/a&gt;.  We learned that our stoplight gadget is supposed to work with any data, something that users can add to their iGoogle page and be used for different data by entering their own threshold and data source. &lt;br /&gt;&lt;br /&gt;During our meeting, we also outlined the various functions and requirements for each version that we need to produce.  We decided to create the basic functions first and then expand from there on.  For version 1.0's visualization aspect, our gadget displays an integer that was taken from a hard coded source, which is from google spreadsheet.  From that basic function we turned it into a gadget. Our next assignment is to add more functionality such as an actual stoplight image, a hard coded threshold, user inputted data source and the accompanying user interface.&lt;br /&gt;&lt;br /&gt;An important lesson I learned from the first two weeks of working on this project is that a clear and concise instruction on what the project is about is a very important feature of software development.   It helps developers to easily plan an outline of how the project is to grow.  Extensive and periodic group meetings is also an important part software development in order to fix problems that arise during development period and to keep the group heading to one direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-1388722290419061214?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/1388722290419061214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/01/stoplight-gadget-v10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1388722290419061214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1388722290419061214'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/01/stoplight-gadget-v10.html' title='Stoplight Gadget v1.0'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3064537948066103018</id><published>2010-01-19T00:22:00.002-10:00</published><updated>2010-01-19T01:09:45.618-10:00</updated><title type='text'>Stoplight App</title><content type='html'>New year, new semester and new project.  Welcome back everyone and glad to have you back to ICS 414 Software Engineering weekly blog entry.  For this semester, Prof. Johnson decided to continue on with last semester's sustainability project, &lt;a title="Wattdepot" href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/30-wattdepotcli-2?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F" id="abt1"&gt;&lt;span class="misspell" suggestions="Watt depot,Watt-depot,Waterspout,Watertight,Wiretapped"&gt;Wattdepot&lt;/span&gt;&lt;/a&gt;, and use it a the key theme for this semester's projects.  Prof. Johnson has given us 6 sustainability projects and let us decide which one we want to work on.  The projects are &lt;span class="misspell" suggestions="Watt depot,Watt-depot,Waterspout,Watertight,Wiretapped"&gt;Wattdepot&lt;/span&gt; Apps, Google Stoplight, HEEP website collaboration, &lt;span class="misspell" suggestions="Kike,Suki,Kicky,Kikuyu,Kirk"&gt;Kukui&lt;/span&gt; Cup Design, &lt;span class="misspell" suggestions="Kike,Suki,Kicky,Kikuyu,Kirk"&gt;Kukui&lt;/span&gt; Cup Prototype and Energy Meter.  Another thing that is different is that we have to meet up with our professor every week which is different from our class time to discuss and present our weekly project development.&lt;br /&gt;&lt;br /&gt;The Wattdepot apps are just a continuation of last semester's project and Google Stoplight is a stand alone application based on the Wattdepot stoplight page using Google visualization.  The others are newly introduced projects that included collaboration with Hawaii Energy Efficiency Program (HEEP) to create a web application that will be included with their upcoming &lt;a title="website" href="http://www.hawaiienergy.com/index.html" id="ne:d"&gt;website&lt;/a&gt; and UH Electrical Engineering in creating a smart energy meter with the Energy Meter project.  The last two are part of the Kukui Cup Competition that includes a project mock-up creation by the design team and the UH dorm integration by the prototype tech team.&lt;br /&gt;&lt;br /&gt;For this project, I am part of the Google Stoplight.  I picked this project because I wanted to try and do some of the extra components that was included in the Wattdepot apps, which is the use of Google visualization to help graph and chart hourly carbon output.  The main difference is that we have to use Google visualization to incorporate the stoplight information.  So far our group have only met yesterday and we talked about the things we have to do.  We just delegated jobs such as the creation of project hosting site and we also talked about our experience with Google Gadget tutorials.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3064537948066103018?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3064537948066103018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2010/01/stoplight-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3064537948066103018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3064537948066103018'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2010/01/stoplight-app.html' title='Stoplight App'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3121387796860852911</id><published>2009-12-19T00:27:00.004-10:00</published><updated>2009-12-19T01:15:51.191-10:00</updated><title type='text'>Ecologineers v.2.1</title><content type='html'>For this assignment, our professor decided not have a final exam, instead we were given the opportunity to improve our web apps.  Since our last presentation, we took the critiques as the basis to improve our application.  The critiques are mostly aesthetics that involves applying the best user interfaces given what our application is set out to do.  These includes decreasing the size of our logo, which for some reason is supposed to be intuitive enough for us to realize and change right away, having default values for our grid info page and setting our pages so that they fit nicely with a lower resolution screen.  The last problem provided a very typical mistake I think what novice programmers face when creating user interfaces, and that is we assume that people who eventually will use our application will have a similar computer set up just like ours.  I learned from this class and the provided UI video lecture that we need to broaden our perspective to be able to account for a larger set of audience each having different different computer set ups.   &lt;br /&gt;&lt;br /&gt;Other than fixing our user interfaces our professor has given us some more functions to choose from as extra credit.  We initially planned on doing five functions but as we go through our finals we wound up just doing two.  Those two were the nice URL function and the AJAX stoplight page refresh.  These function were not that bad to implement.  Our team tried to learn AJAX just for this particular function.  As for the function that didn't make it, date picker, and google visualization, we tried to implement them but were having problems that we just abandoned them.  One thing to note is that during our presentation for version 2.1 we told how we were having problems with our date picker and one of our fellow classmates pointed out the bug.  This made me realized that when an application is deployed, it's users can be very helpful in finding bugs.  But I woudn't count on them because I learned from a different class that fixing programs already deployed are costlier than finding them during dvelopment. &lt;br /&gt;&lt;br /&gt;All in all I really enjoyed working on this project.  I also enjoyed working with my group.  I'm really taking this experience as a good indication of how the professional programmers work in the real world since I plan on being one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3121387796860852911?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3121387796860852911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/12/ecologineers-v21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3121387796860852911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3121387796860852911'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/12/ecologineers-v21.html' title='Ecologineers v.2.1'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3183881918719056453</id><published>2009-11-24T18:01:00.006-10:00</published><updated>2009-11-24T20:59:40.266-10:00</updated><title type='text'>Oscar WebApp Code Review:  WattWaiter</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nJaBUpVdAj8/SwyufNu0yWI/AAAAAAAAAAs/v2mX7FPTd7Y/s1600/wattwaitericon.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 143px; height: 118px;" src="http://3.bp.blogspot.com/_nJaBUpVdAj8/SwyufNu0yWI/AAAAAAAAAAs/v2mX7FPTd7Y/s400/wattwaitericon.PNG" alt="" id="BLOGGER_PHOTO_ID_5407889103850359138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For this assignment we are doing code reviews on our fellow classmates' &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/31-oscarwebapp"&gt;Oscar web applications&lt;/a&gt;.  I am reviewing team &lt;a href="http://code.google.com/p/wattwaiter/"&gt;WattWaiter &lt;/a&gt;with Remy Baumgarten, David Mau and Kevin Chiogioji as members.  This review is based on a new &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-review-checklist"&gt;checklist &lt;/a&gt;that has some new points that includes Wiki Documentation, Software ICU, Issue Management and Continuous Integration.&lt;br /&gt;&lt;br /&gt;My overall feel of the application is that it was designed, both the program and the application interface, very good so much so that it could almost be passed as professionally built.  The negative things I have to say are mostly nitpicks that this checklist looks for.  Other than that it was a very robust application.&lt;br /&gt;&lt;br /&gt;The full review can be found &lt;a href="http://www2.hawaii.edu/~paulmark/WattWaiterReview.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;The WattWaiter web app can be accessed &lt;a href="http://code.google.com/p/wattwaiter/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3183881918719056453?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3183881918719056453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/oscar-webapp-code-review-wattwaiter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3183881918719056453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3183881918719056453'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/oscar-webapp-code-review-wattwaiter.html' title='Oscar WebApp Code Review:  WattWaiter'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://3.bp.blogspot.com/_nJaBUpVdAj8/SwyufNu0yWI/AAAAAAAAAAs/v2mX7FPTd7Y/s72-c/wattwaitericon.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-8660717299882641246</id><published>2009-11-23T07:02:00.007-10:00</published><updated>2009-11-23T07:51:59.685-10:00</updated><title type='text'>Ecologineers:  Oscar Web Application</title><content type='html'>As we continue along working in bigger teams, we explore more and more on how to develop &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/31-oscarwebapp?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;applications&lt;/a&gt;.  For this assignment, my group from the previous &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/30-wattdepotcli-2?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;WattDepot project&lt;/a&gt; got teamed up with another two man group.  Just like my original group, we all worked perfectly together.  We set up plans, delegated jobs and met up regularly.  I had as much fun on this project just like the last one.&lt;br /&gt;&lt;br /&gt;As for the proj&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.manning.com/dashorst/dashorst_cover150.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 188px;" src="http://www.manning.com/dashorst/dashorst_cover150.jpg" alt="" border="0" /&gt;&lt;/a&gt;ect itself, it was very daunting at first to hear that were going to learn a new framework that were going to use for this project.  Our professor repeatedly reminded us the importance of this framework during lectures and especially at the project screen cast.  The reading (&lt;a href="http://www.manning.com/dashorst/"&gt;Wicket in Action&lt;/a&gt; by Martijn Dashorst and Eelco Hillenius) alone was a little hard to comprehend but just as other languages, you learn by doing it.  We were given some example applications to show us how the new framework works.  As we progressed on our project we quickly learned that Wicket wasn’t as bad as we thought it would be.  It turned out to be straightforward.  When we tried to implement Wicket with our code we had some small problems.  One problem was actually merging the form and table page.  We initially planned then delegated the two jobs to two of our people, one of them being me.  When we tried to merge the two together we hit some snags where our Wicket tags were not being passed into the HTML tags.  Another problem, which I think was a big one, is that our color tags won’t render the color. Since we ran out of time we just left it as is which instead of passing the HTML color it passes the color words instead.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nJaBUpVdAj8/SwrK0G5kbNI/AAAAAAAAAAk/vCHMNl83tAU/s1600/eco.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 44px;" src="http://1.bp.blogspot.com/_nJaBUpVdAj8/SwrK0G5kbNI/AAAAAAAAAAk/vCHMNl83tAU/s400/eco.PNG" alt="" id="BLOGGER_PHOTO_ID_5407357299165785298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since we were introduce to &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/29-softwareicu?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F&amp;amp;pli=1"&gt;Software ICU&lt;/a&gt; in the last project.  We also implemented it for this project.  From the look of the screen shot from above, our coverage was fair since we only had six test cases.  Our devTime, Commit, and Build has some steep increase because even though we did the initial set up then met up regularly and discussed the plan, we didn’t actually started to code until weekend.&lt;br /&gt;&lt;br /&gt;All in all I really enjoyed working on this project and not to mention with my group.  I really got a feel on how to develop real word applications.  This is also a good project to learn good sustainability practices since any user can download, run and use our application to help decide when to use or not use an appliance.&lt;br /&gt;&lt;br /&gt;Our project site can be accessed &lt;a href="http://code.google.com/p/ecologineers/"&gt;here &lt;/a&gt;and our distribution file &lt;a href="http://ecologineers.googlecode.com/files/wicket-ecologineers-1.0.1123.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-8660717299882641246?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/8660717299882641246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/ecologineers-oscar-web-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8660717299882641246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8660717299882641246'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/ecologineers-oscar-web-application.html' title='Ecologineers:  Oscar Web Application'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://1.bp.blogspot.com/_nJaBUpVdAj8/SwrK0G5kbNI/AAAAAAAAAAk/vCHMNl83tAU/s72-c/eco.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-153089930879250279</id><published>2009-11-16T06:51:00.007-10:00</published><updated>2009-11-16T07:37:42.760-10:00</updated><title type='text'>WattDepot-Cli 2.0:  Second time is the charm!</title><content type='html'>As we wrap up on our &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/30-wattdepotcli-2?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;WattDepot-Cli&lt;/a&gt; project we gain more perspective on how the software development works.  In this assignment we are to update, improve and add new commands to our version 1.0 of &lt;span style="font-style: italic;"&gt;WattDepot&lt;/span&gt;.  We are still working with our initial partners and as for our group, it has never been better.  Even from the start of this project my partner and I communicated every other day and delegated jobs.  Our jobs weren’t so concrete which gave us a little flexibility so that we can do other things outside of this class.  We also met twice a week not including the time we spent working on our projects in class.  All in all my experience with my partner in producing the &lt;span style="font-style: italic;"&gt;WattDepot &lt;/span&gt;client was a pleasant one.&lt;br /&gt;&lt;br /&gt;In terms of our client, we have improved our methods by reviewing the changes in the commands provided in the &lt;a href="http://code.google.com/p/wattdepot-cli/wiki/CommandSpecificationVersionTwo"&gt;WattDepot wiki&lt;/a&gt; and suggestions coming from last week’s &lt;a href="http://pmgaliza.blogspot.com/2009/11/wattdepot-client-code-review.html"&gt;code review&lt;/a&gt;.  One of the things we did was to add the necessary comments and improve our Javadoc so that any developer can understand our code and use our &lt;span style="font-style: italic;"&gt;API &lt;/span&gt;for reference.  We also have added more test cases.  Most are still happy-path tests but now we’ve included some behavioral test such as our validation tests.  Even with more test cases our coverage is still under the healthy 90%.  Our coverage is 63% because some of the new commands and old commands didn’t get tested.  Other than the coverage being low, we did find that writing test cases was much easier when we refactored the commands into their own classes.&lt;br /&gt;&lt;br /&gt;As for new materials that we learned, we used a program that displays the current condition of our program.  It is called &lt;span style="font-style: italic;"&gt;Hackystat&lt;/span&gt;.  &lt;span style="font-style: italic;"&gt;Hackystat &lt;/span&gt;retrieves information from our local and Hudson builds and the amount of time we spend in Eclipse.  It measures and displays different categories that are pointed to the overall health of our program.&lt;br /&gt;Here’s a screen shot of our program information.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nJaBUpVdAj8/SwGK1r_kBAI/AAAAAAAAAAc/nxQMtR8OqAA/s1600/hackystat.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 46px;" src="http://2.bp.blogspot.com/_nJaBUpVdAj8/SwGK1r_kBAI/AAAAAAAAAAc/nxQMtR8OqAA/s400/hackystat.PNG" alt="" id="BLOGGER_PHOTO_ID_5404753682768331778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The overall health of our program is a little stable.  The reason for this is because of the lack of testing (30%) which consequently affected the coverage.  The screen shot also shows the increasing trends of our development time commit and build because we worked on it mostly on the last four days before the due date.&lt;br /&gt;&lt;br /&gt;The last part of this assignment is to answer some question regarding information that we gather from our program.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What day and time during the month was Oahu energy usage at its highest?  How many MW was this?&lt;/li&gt;&lt;/ul&gt;          November 2-6, 9-13, 16-20, and 23-27 all had a usage of 995MW&lt;ul&gt;&lt;li&gt;What day and time during the month was Oahu energy usage at its lowest?  How many MW was this?&lt;/li&gt;&lt;/ul&gt;          November 2-6, 9-13, 16-20, 23-27 all had a usage of 493MW&lt;ul&gt;&lt;li&gt;What day during the month did Oahu consume the most energy?   How many MWh was this?&lt;/li&gt;&lt;/ul&gt;         Unknown&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What day during the month did Oahu consume the least energy? How many MWh was this?&lt;/li&gt;&lt;/ul&gt;          Unknown&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What day during the month did Oahu emit the most carbon (i.e. the "dirtiest" day)?  How many lbs of carbon were emitted?&lt;/li&gt;&lt;/ul&gt;          4th, 5th, 16th, 17th, and 30th of November.  29,959 pounds of CO2 were emitted.&lt;ul&gt;&lt;li&gt;What day during the month did Oahu emit the least carbon (i.e. the "cleanest" day)?  How many lbs of carbon were emitted?&lt;/li&gt;&lt;/ul&gt;          7th and 8th of November.  22,908 pounds of CO2 were emitted.&lt;br /&gt;&lt;br /&gt;Our Wattdepot client version 2.0 can be found &lt;a href="http://wattdepot-cli.googlecode.com/files/wattdepot-cli-ekahi-2.0.1116.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-153089930879250279?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/153089930879250279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/wattdepot-cli-20-second-time-is-charm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/153089930879250279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/153089930879250279'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/wattdepot-cli-20-second-time-is-charm.html' title='WattDepot-Cli 2.0:  Second time is the charm!'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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://2.bp.blogspot.com/_nJaBUpVdAj8/SwGK1r_kBAI/AAAAAAAAAAc/nxQMtR8OqAA/s72-c/hackystat.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6356837882226393187.post-3208926436063433683</id><published>2009-11-11T00:19:00.002-10:00</published><updated>2009-11-11T00:25:53.723-10:00</updated><title type='text'>Code Review:  A subtle but rewarding learning experience</title><content type='html'>Some people might not like the fact that their code is to be reviewed or to be the person who does it but I believe that there is a rewarding experience that results from this experience.  I, for one, value the effort a person did to look how our overall product came out to be, some of which say that we didn’t commented enough for them to understand our code.  Besides having a working system, our class’s &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-prime-directives?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;third prime directive&lt;/a&gt; states that our code should have a good developer-level documentation that provides the inner workings and therefore should make it easy for them to understand and expand.  This is particularly true in our assignment which taught me a valuable lesson since we have to create our user interface client upon the &lt;a href="http://code.google.com/p/wattdepot/"&gt;WattDepot&lt;/a&gt; system.  The documentation on the WattDepot system helped us implement the commands that were assigned.  Another comment I took into consideration was the design which didn’t really surprised me since we didn’t follow the design requirement.  Our system grouped all the commands into one class instead of having each one of them in its own class.  This is particularly an important point since it restricts our system’s extensibility.  This design is now an important part because we are adding more commands into our client and this task would’ve made our jobs a lot easier.  This I also think that the &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-review-checklist?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F&amp;pli=1"&gt;checklist&lt;/a&gt; that our review is based on also helped on how I will improve our client.  All of our command methods are expressed to have “side effects” and therefore is a design problem that we have to address.&lt;br /&gt;&lt;br /&gt;Overall I found this assignment worthwhile.  Having another person not just examines but also gives suggestions on how to improve our system is a good way for me to actually be a good programmer.  Not only did I have fun working with my partner but I also enjoyed reviewing other people’s system and hope that they find it helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3208926436063433683?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3208926436063433683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/code-review-subtle-but-rewarding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3208926436063433683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3208926436063433683'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/code-review-subtle-but-rewarding.html' title='Code Review:  A subtle but rewarding learning experience'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-8524004114219576707</id><published>2009-11-09T04:06:00.009-10:00</published><updated>2009-11-24T21:06:31.443-10:00</updated><title type='text'>WattDepot Client Code Review</title><content type='html'>After working for more than a week on the &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/23-wattdepotcli?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;WattDepot client&lt;/a&gt;, we have to review our fellow classmates' client for this assignment.  This review is generally a way for us learn how to both give constructive criticism based of a &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-review-checklist?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;checklist&lt;/a&gt; and apply them to our existing code to improve upon for our upcoming updated release of the WattDepot client.&lt;br /&gt;&lt;br /&gt;Eha&lt;br /&gt;In general the client works good, it does what it supposed to do.  Some of the things that I find a little weird was the chart output which has some rather small points and therefore a low chart considering that given the same arguments other clients produced a proportional chart.  As for the design, the only thing is that it did not followed the design requirement of having each commands in it's own class.  This is important so that the client supports extensibility considering our next assignment will have new commands.&lt;br /&gt;&lt;br /&gt;The full review can be found &lt;a href="http://www2.hawaii.edu/~paulmark/EhaReview.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Elua&lt;br /&gt;When I first tried to review this group's client I had some problems some problems such as not being able to run the jar file.  After using Eclipse to run the client I encountered a bigger problem, for some reason only the 'help' and 'list summary' commands work and the rest didn't especially 'quit'.  After some time they released a second version which only fixed the non-executing jar file and from that second build I based my review.  Their client followed the proper requirements and all their commands worked perfectly.  Their test cases were also some of the things that they have done a good job.&lt;br /&gt;&lt;br /&gt;The full review can be found &lt;a href="http://www2.hawaii.edu/~paulmark/EluaReview.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-8524004114219576707?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/8524004114219576707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/wattdepot-client-code-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8524004114219576707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8524004114219576707'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/wattdepot-client-code-review.html' title='WattDepot Client Code Review'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-1563788075205590832</id><published>2009-11-04T07:20:00.004-10:00</published><updated>2009-11-04T07:32:48.801-10:00</updated><title type='text'>Full Scale Software Engineering Project:  WattDepot</title><content type='html'>Continuing from my recent &lt;a href="http://pmgaliza.blogspot.com/2009/11/continuous-integration.html"&gt;post&lt;/a&gt; about a new concept we learned, we get our hands on an interesting programming practice called &lt;span style="font-style: italic;"&gt;Continuous Integration&lt;/span&gt;.  For this assignment, we were partnered up and create a command line interface for the &lt;a href="http://code.google.com/p/wattdepot/"&gt;WattDepot&lt;/a&gt; system. &lt;span style="font-style: italic;"&gt; WattDepot &lt;/span&gt;is a web service that collects information about Oahu’s energy and power production/consumption.  My partner, David Joel Lazarro, and I had to implement various commands to be used on the stored &lt;span style="font-style: italic;"&gt;WattDepot &lt;/span&gt;data.  We planned on splitting the commands in two and as we started working on our commands, we got our first experience of practicing continuous integration.  We initially didn’t get the hang of it.  We rarely commit to our repository, waiting until a full working method, both tested and verified locally, before committing our changes.  But as we progress in this project we learned how to properly practice it.  We did have some problems such as fixing merge conflicts since we didn’t really have any set design plan.  As our code continued to grow, we finally found a good rhythm that tied our code into a unified look.&lt;br /&gt;&lt;br /&gt;As for &lt;span style="font-style: italic;"&gt;WattDepot&lt;/span&gt;, we implemented all the commands that were assigned.  This is one of the first times where I had to build on someone else’s code in this scale.  Having a good documentation and &lt;span style="font-style: italic;"&gt;API &lt;/span&gt;really helped me understand the inner workings of the &lt;span style="font-style: italic;"&gt;WattDepot &lt;/span&gt;system.  This reinforces the importance of the &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-prime-directives?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F&amp;amp;pli=1"&gt;third prime directives&lt;/a&gt; first taught in this class.  The commands were mixed in terms of implementation difficulty, but I noticed some recurring similarities within some consecutive commands, which made the whole thing not so bad.  Halfway through our given time for this project we were told improve our design strategy and implementation.  This threw us of a little.  The new strategy is meant to improve the scalability, reusability and efficiency of the command line interface.  My partner and I understood the design strategy that was shown to us and we tried to implement it but to no success.  This is the reason why we didn’t really have some good test cases for this project.  The new strategy could’ve helped us design better cases instead of having just acceptance tests.  Our methods were designed in way that it is constrained by the parameters preventing us from testing the instances of commands.  This would’ve been easily implemented if we followed the new strategy’s design of having the commands in separate classes.&lt;br /&gt;&lt;br /&gt;All in all I thought this project gave me an insight to the world of software engineering.  Planning and implementing this project was just as fun as meeting up and working with my partner.  I also thought that having a project that teaches us the importance of sustainability, especially in these times, is a cool way to really get our attention. &lt;br /&gt;&lt;br /&gt;Our distribution file:  &lt;a href="http://wattdepot-cli.googlecode.com/files/wattdepot-cli-ekahi-1.0.1104.zip"&gt;Ekahi&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-1563788075205590832?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/1563788075205590832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/full-scale-software-engineering-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1563788075205590832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/1563788075205590832'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/full-scale-software-engineering-project.html' title='Full Scale Software Engineering Project:  WattDepot'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-2020704019903033107</id><published>2009-11-02T00:17:00.003-10:00</published><updated>2009-11-02T01:58:17.088-10:00</updated><title type='text'>Continuous Integration</title><content type='html'>For this assignment we were introduced to a new practice in software development called &lt;a href="http://martinfowler.com/articles/continuousIntegration.html"&gt;Continuous Integration&lt;/a&gt;.  The main objective is to commit changes frequently so that any errors are quickly detected and easy enough to solve.  This builds the repository gradually instead of committing a huge change that it doesn’t look as the original and committing these changes can lead to clobbering of update changes. &lt;br /&gt;&lt;br /&gt;To practice continuous integration, we are using &lt;a href="http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson"&gt;Hudson&lt;/a&gt;.  The creation of a new job within Hudson fell to my partner.  From what I saw him do, the set up went good and we were up and running in no time.  The other tasks that fell onto me were to initially build within Hudson and then create a small change from my local copy and committing it.  This ensured that Hudson detected the changes and it worked as such.  The next task is to commit a broken code and check if Hudson’s build report shows a failed build.  I then received an email report saying it did so.  Lastly, we fixed the bug and committed the changes and made sure that Hudson’s build is back to normal.&lt;br /&gt;&lt;br /&gt;After a couple of days of using Hudson and practicing continuous integration, I find it as something I would definitely use in the future.  Besides the automatic email notifications of any build failures, I find the logic behind small incremental changes as something that can improve any team based projects.  This approach reminds me of the divide-and-conquer strategy which applies to the planning and then implementation of creating software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-2020704019903033107?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/2020704019903033107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/continuous-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2020704019903033107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2020704019903033107'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/11/continuous-integration.html' title='Continuous Integration'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-2078257376337478253</id><published>2009-10-18T23:34:00.008-10:00</published><updated>2009-10-22T22:52:27.767-10:00</updated><title type='text'>Midterm Study Questions</title><content type='html'>Here are some study questions for the our midterm.&lt;br /&gt;&lt;br /&gt;Update: Added the answer to the questions&lt;br /&gt;&lt;br /&gt;1. What are the three prime directives?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    The system accomplishes a useful task&lt;/li&gt;&lt;li&gt;    An external user can install and use the system&lt;/li&gt;&lt;li&gt;    An external developer can understand and enhance the system&lt;/li&gt;&lt;/ul&gt;2. Give one example of a basic Collection class and describe it&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    Sets: no duplicates and add works differently&lt;/li&gt;&lt;li&gt;SortedSet: traverses elements in their "natural order"&lt;/li&gt;&lt;li&gt;List: Ordered collection and like an array with flexible size&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;3. Give three examples of our class Java Coding standards.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    2 space indent&lt;/li&gt;&lt;li&gt;    No tabs, only spaces.&lt;/li&gt;&lt;li&gt;    Left curly brace on preceding line; right curly brace on its own line&lt;/li&gt;&lt;li&gt;    100 columns of text maximum maximum&lt;/li&gt;&lt;li&gt;    JavaDoc layout standards&lt;/li&gt;&lt;/ul&gt;4. What are some advantages of using Ant vs. Make.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java-based&lt;/li&gt;&lt;li&gt;    xml is simpler than a Makefile&lt;/li&gt;&lt;li&gt;    Built in Java support and its tools&lt;/li&gt;&lt;li&gt;    Easier to extend in a portable manner&lt;/li&gt;&lt;/ul&gt;5. Why do we have to run Ant once in order to import distribution files to an IDE.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    So that Ant downloads the necessary libraries needed&lt;/li&gt;&lt;/ul&gt;6. Write a sample Ant Target code.&lt;br /&gt;&lt;br /&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color:gray"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:gray"&gt;target name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;TestTarget&amp;quot; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray"&gt;description&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;Target that does nothing.&amp;quot;&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;gt;&lt;br&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:gray"&gt;target&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;7. What are some advantages of Git over SVN.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   Allows users to work productively even when not connected to a network&lt;/li&gt;&lt;li&gt;   Makes most operations much faster since no network is involved&lt;/li&gt;&lt;li&gt;   Allows participation in projects without requiring permissions from project authorities&lt;br /&gt;&lt;/li&gt;&lt;li&gt;   Avoids relying on a single physical machine. A server disk crash is a non-event with distributed revision control&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;8. What is the difference between White box and Black box testing.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   White box testing tests the implementation of the code where it accepts an input and produces the appropriate output&lt;br /&gt;&lt;/li&gt;&lt;li&gt;   Black box testing tests the expected output given the input&lt;/li&gt;&lt;/ul&gt;9. What are the three classic CM problems and describe them.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   Double Maintenance: prevents multiple copies of the same file and must be updated independently&lt;br /&gt;&lt;/li&gt;&lt;li&gt;   Shared Data problem: allows two or more developers access the same file/data&lt;/li&gt;&lt;li&gt;   Simultaneous Update: Must prevent clobbering when two updating the same file at the same time&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;10.What are some properties that defines an OSS.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   Free Redistribution&lt;/li&gt;&lt;li&gt;   Source code availability&lt;/li&gt;&lt;li&gt;   Derived Works&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-2078257376337478253?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/2078257376337478253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/10/here-are-some-study-questions-for-our.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2078257376337478253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2078257376337478253'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/10/here-are-some-study-questions-for-our.html' title='Midterm Study Questions'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-6888875244090514296</id><published>2009-10-13T23:51:00.003-10:00</published><updated>2009-10-14T01:23:23.634-10:00</updated><title type='text'>Configuration Management:  Subversion</title><content type='html'>In this assignment we have to practice using subversion as our centralized configuration management tool using &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt; as a subversion client and &lt;span style="font-style: italic;"&gt;Google Code &lt;/span&gt;to &lt;a href="http://code.google.com/p/support/wiki/GettingStarted"&gt;host&lt;/a&gt; our source projects.&lt;br /&gt;All in all I find this assignment very helpful in any group projects.  &lt;span style="font-style: italic;"&gt;Tortoise &lt;/span&gt;was very easy to use and install.  When I first imported my source codes to &lt;span style="font-style: italic;"&gt;Google host&lt;/span&gt;, I accidentally uploaded other directories such as &lt;span style="font-style: italic;"&gt;bin&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;lib &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;build&lt;/span&gt;.  &lt;span style="font-style: italic;"&gt;Tortoise &lt;/span&gt;was easy enough to use where I just deleted my local copy and committed the changes to &lt;span style="font-style: italic;"&gt;Google host&lt;/span&gt;'s copy.  As good as &lt;span style="font-style: italic;"&gt;Tortoise&lt;/span&gt;'s function are, I find it weird that I have to right click within directories to use all of its function instead of a graphical interface such as those in &lt;span style="font-style: italic;"&gt;SmartSVN&lt;/span&gt;.  Setting up &lt;span style="font-style: italic;"&gt;Google host &lt;/span&gt;site was just as easy as using &lt;span style="font-style: italic;"&gt;Tortoise&lt;/span&gt;.  All tasks were completed except for adding a &lt;span style="font-style: italic;"&gt;codesite-noreply@google.com&lt;/span&gt;.  I posted to the appropriate forum so that they can add the link to our discussion manually. &lt;br /&gt;&lt;br /&gt;You can check out my host site &lt;a href="http://code.google.com/p/robocode-pmg-wallee/"&gt;here&lt;/a&gt; and discussion &lt;a href="http://groups.google.com/group/robocode-pmg-wallee-discuss"&gt;here&lt;/a&gt;.&lt;br /&gt;Updated &lt;a href="http://www2.hawaii.edu/%7Epaulmark/robocode-pmg-WallEE-1.1.1007.zip"&gt;WallEE&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-6888875244090514296?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/6888875244090514296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/10/configuration-management-subversion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/6888875244090514296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/6888875244090514296'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/10/configuration-management-subversion.html' title='Configuration Management:  Subversion'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3861935116831771720</id><published>2009-10-07T03:07:00.010-10:00</published><updated>2009-10-07T06:25:18.729-10:00</updated><title type='text'>Testing:  It's not as easy as it sounds!</title><content type='html'>On this &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/17-robocodetest?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;assignment&lt;/a&gt;, we have to create different test cases for our &lt;span style="font-style: italic;"&gt;Robocode&lt;/span&gt; robots.  These test cases are &lt;span style="font-style: italic;"&gt;Acceptance&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Behavioral&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;Unit &lt;/span&gt;tests. &lt;span style="font-style: italic;"&gt; Acceptance &lt;/span&gt;test are tests that simply checks if our robot beats one of the sample robots in a given number of rounds. &lt;span style="font-style: italic;"&gt; Behavioral &lt;/span&gt;test are tests that makes sure our robot’s movement, firing, or targeting are doing what they are intended to do.  Lastly, there are &lt;span style="font-style: italic;"&gt;Unit &lt;/span&gt;tests which verify our robots’ method output given different inputs.  The later might have to be written after our robots’ code is "refactored".&lt;br /&gt;&lt;br /&gt;We were given a heads up on the what these test are when we described possible test cases on our partner’s robot during &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/18-robocodetestlab-1?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;lab&lt;/a&gt;.  Describing these tests was easy enough but little did I know that implementing these seemingly easy test was going to be so hard.&lt;br /&gt;&lt;br /&gt;For my &lt;span style="font-style: italic;"&gt;acceptance &lt;/span&gt;test I used &lt;span style="font-style: italic;"&gt;SittingDuck&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Corners &lt;/span&gt;against &lt;span style="font-style: italic;"&gt;WallEE&lt;/span&gt;.   As for my &lt;span style="font-style: italic;"&gt;behavioral&lt;/span&gt; test, I created a test to make sure my robot turns in the right direction since &lt;span style="font-style: italic;"&gt;WallEE &lt;/span&gt;is based on sample walls, it turns left towards and perpendicular to the first wall it sees.  Lastly my &lt;span style="font-style: italic;"&gt;unit &lt;/span&gt;test consists of testing how my robot fires a bullet with power proportional to the distance of the enemy.  This was the hardest to implement because I did not have the methods that was in accessible in &lt;span style="font-style: italic;"&gt;WallEE &lt;/span&gt;such as determining the distance between &lt;span style="font-style: italic;"&gt;WallEE &lt;/span&gt;and its enemy.  This was a great opportunity for me to modify my code in order to have a “testable” block of code, which I did but to no result.  It was hard for me to “refactor” that specific code so that I can test it and at the same time preserve its original function.  So I did most of the distance calculation within my test which I know is not a good idea because it does not preserve the encapsulation of my code.&lt;br /&gt;&lt;br /&gt;I don't feel that my tests adequately ensure the quality of my robot because I only have four test cases.  Two of which are &lt;span style="font-style: italic;"&gt;acceptance &lt;/span&gt;and one of each &lt;span style="font-style: italic;"&gt;behavioral &lt;/span&gt;and unit &lt;span style="font-style: italic;"&gt;tests&lt;/span&gt;.  What I would have done is to test my other movement strategy which is &lt;span style="font-style: italic;"&gt;WallEE &lt;/span&gt;treading back to where the enemy was to get another shot.&lt;br /&gt;&lt;br /&gt;After implementing the test cases for the &lt;span style="font-style: italic;"&gt;junit&lt;/span&gt;, I ran &lt;span style="font-style: italic;"&gt;Emma &lt;/span&gt;which is another build tool that measures and reports Java code coverage. Here are the results:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Class - 86%&lt;/li&gt;&lt;li&gt;Method - 88%&lt;/li&gt;&lt;li&gt;Block -84%&lt;/li&gt;&lt;li&gt;Line - 85%&lt;/li&gt;&lt;/ul&gt;From these result I learned that &lt;span style="font-style: italic;"&gt;Emma &lt;/span&gt;will doesn't really look at &lt;span style="font-style: italic;"&gt;TestBedAssert &lt;/span&gt;which accounts for the missing coverage.  Some of the code in &lt;span style="font-style: italic;"&gt;WallEE&lt;/span&gt;'s class was not run, &lt;span style="font-style: italic;"&gt;onHitRobot&lt;/span&gt;, since most of my test enemy is a &lt;span style="font-style: italic;"&gt;sittingDuck &lt;/span&gt;robot.&lt;br /&gt;&lt;br /&gt;All in all this assignment was hard but very rewarding.  The practice we get from creating not just only any test cases but good test cases will help us write codes that are both easy to understand and easy to test.&lt;br /&gt;&lt;br /&gt;The new distribution file of &lt;span style="font-style: italic;"&gt;WallEE &lt;/span&gt;can be downloaded &lt;a href="http://www2.hawaii.edu/%7Epaulmark/robocode-pmg-WallEE-1.1.1007.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3861935116831771720?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3861935116831771720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/10/testing-its-not-as-easy-as-it-sounds.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3861935116831771720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3861935116831771720'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/10/testing-its-not-as-easy-as-it-sounds.html' title='Testing:  It&apos;s not as easy as it sounds!'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-8054059666649526359</id><published>2009-09-29T20:47:00.007-10:00</published><updated>2009-10-05T13:49:23.465-10:00</updated><title type='text'>Build System: Ant</title><content type='html'>As we progress and improve our robots for the improved robot Robocode rumble, we were introduced to a very useful build tool called &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; and its dependency manager called &lt;a href="http://ant.apache.org/ivy/"&gt;Ivy&lt;/a&gt;. We also got a first hand experience with the &lt;a href="http://code.google.com/p/robocode-pmj-dacruzer/downloads/list"&gt;Ant code&lt;/a&gt; which was provided by our professor. We are to adapt this Ant code with our code and invoke 3 quality assurance tools. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;ant -f checkstyle.build.xml&lt;/li&gt;&lt;li&gt;ant -f pmd.build.xml&lt;/li&gt;&lt;li&gt;ant -f findbugs.build.xml&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The only problems I had after running &lt;span style="font-style: italic;"&gt;checkstyle&lt;/span&gt; were with the &lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;javadoc&lt;/span&gt; and missing package info. The first one was really easy to fix. All I had to do was add the necessary &lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;@param&lt;/span&gt; that was left out. It is interesting to see how after revising my code to follow our class' java coding standards and having it reviewed by a classmate, that this necessary &lt;span style="font-style: italic;"&gt;javadoc&lt;/span&gt; information was overlooked. This is where the quality assurances come in handy. The automation of tasks such as looking for coding standard errors helps achieve the &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-prime-directives?_done=%2Fgroup%2Fics-software-engineering-fall-2009%3F"&gt;3rd prime directive&lt;/a&gt;, which informs an external user by providing a correct java documentation.&lt;br /&gt;&lt;br /&gt;The other problem was not as easy to fix like adding the missing &lt;span style="font-style: italic;"&gt;javadoc&lt;/span&gt; information. After looking at the results of running &lt;span style="font-style: italic;"&gt;checkstlye&lt;/span&gt;, which I thought didn't help because it displays the same error message, I checked the original system to see what was missing and it turns out that within &lt;span style="font-style: italic;"&gt;DaCruzer's&lt;/span&gt; directory is an &lt;span style="font-style: italic;"&gt;html&lt;/span&gt; file that describes the package. So I did created the same file which describes my package.&lt;br /&gt;&lt;br /&gt;After running &lt;span style="font-style: italic;"&gt;checkstyle&lt;/span&gt;, I tried running the other quality assurance, &lt;span style="font-style: italic;"&gt;pmd&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;findbugs&lt;/span&gt;, and did not get any errors.&lt;br /&gt;&lt;br /&gt;These quality assurance tools are very helpful in producing robust system that corrects coding standards, improve code efficiency and packages easily. I had a hard time understanding what the Ant code does at first but now that we had hands on experience and understanding each line during a class discussion, I feel like this is something I can use in the future to be better programmer.&lt;br /&gt;&lt;br /&gt;Updated WallEE can be downloaded &lt;a href="http://www2.hawaii.edu/%7Epaulmark/robocode-pmg-WallEE-1.1.1005.zip"&gt;here&lt;/a&gt;.&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-8054059666649526359?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/8054059666649526359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/build-system-ant.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8054059666649526359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/8054059666649526359'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/build-system-ant.html' title='Build System: Ant'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3181833814926220454</id><published>2009-09-21T02:52:00.009-10:00</published><updated>2009-09-21T04:03:24.952-10:00</updated><title type='text'>Test bout against Sample Robot!</title><content type='html'>We are getting closer to the big fight and in the process testing and refining our robots against the sample robots we reviewed. Ever since our group discussion on designing counter measures against sample robots, I have been planning a robot that will win against all of the sample robots.  My strategy is similar to the sample robot Walls.  After reviewing each sample robots, I learned that Walls outlast the other robots by avoiding enemy fires, since it travels a long distance along the perimeter of the wall.  I am adopting Walls because of this attribute, hence the name of my robot WallEE.  I added some movement where whenever it scans an enemy, it goes back so that it will have another chance to shoot at the enemy.  Another thing I added is just a simple avoidance strategy where it changes direction if it gets hit.&lt;br /&gt;&lt;br /&gt;My robot did great against each sample robots.  I purposely added the avoidance strategy just to defeat Ramfire and Walls itself.  Those were the only robots that sometimes would fare better than WallEE.  This is one of the things I had to improve on, to get a better percentage of winning.  I realized that these two sample robot wins because they cornered mines.   So I added a firing criteria where my robot fires a bullet with its power relative to the enemy's distance.  This strategy, coupled with the avoidance strategy improved that percentage.  I learned that I have to improve my robot's overall functions, movement, tracking and firing, so that it is equipped with different functions counter the sample robots&lt;br /&gt;&lt;br /&gt;I learned from this experience, that adding functions to counter a specific enemy strategy is inefficient.  I have to improve my robot's overall functions, movement, tracking and firing, so that it is equipped with different functions to counter the sample robots.  This would be something I would've done differently.   I would've tried a strategy that works on most enemies since it's too tedious to plan a counter for every strategy.&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="http://www2.hawaii.edu/%7Epaulmark/pmg.WallEE_1.0.jar"&gt;WallEE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3181833814926220454?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3181833814926220454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/test-bout-against-sample-robot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3181833814926220454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3181833814926220454'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/test-bout-against-sample-robot.html' title='Test bout against Sample Robot!'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-3435090662246579889</id><published>2009-09-15T23:44:00.019-10:00</published><updated>2009-09-16T03:36:01.854-10:00</updated><title type='text'>Robocode Sample Strategies Reviewed</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;After creating our own movements and reviewing other people's implementation, it was a nice change of pace to review the sample robots the contributors of Robocode have created.  I got an insight to some simple strategies for creating the best robot.  Studying their implementation have shown me different methods I would have not known or use otherwise.  This have helped me plan a strategy for the upcoming Robocode competition.&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Review Tasks:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul style="font-style: italic;"&gt;&lt;li&gt;Movement: How does the robot move? Does it have an avoidance or following strategy?&lt;/li&gt;&lt;li&gt;Targeting: How does it find a target to fire?&lt;/li&gt;&lt;li&gt;Firing: What is its criteria for firing?&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Wall&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt;  This robot moves around the perimeter of the wall in a clockwise manner. It does this by turning left and by going ahead to the wall it is facing.  It has an avoiding strategy which moves the robot back if the enemy who shot it is in front and ahead if it's behind.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;  Its targeting mechanism is very basic that it uses the game's call to scan which does it automatically whenever the robot moves or turns its body/gun/radar.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;  It also has a very basic firing system where it fires at an enemy whenever it scans an enemy robot.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;RamFire&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot searches for an enemy and ram it then when it hits its enemy if fires a bullet with power that depends on the enemy's energy.  It does this by relying on the enemy's bearing which in turn determines how the robot turns in which direction.It has no avoidance technique since its primary objective is ram enemies for bonus points.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt; Its targeting is dependent on how the robot moves when it changes it's direction.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt; The robots firing mechanism depends on the enemy's energy points.  It fires a low power bullet if the energy level is low. The robot's purpose seems to use ramming as primary technique instead of firing bullets.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;SpinBot&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot moves in a circle and fires an enemy when in range.  Its avoidance strategy is its circular movement.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt; Its targeting mechanism is pretty basic, it fires whenever it scans an enemy.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt; Since its targeting is basic, this robot fires a bullet with a power of 3.&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;Crazy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot's movement just like its name suggest is crazy. Its erratic behavior resembles a chicken with its head cut-off.  It has a set amount of pixel movement and changes direction each turn. It changes reverses direction whenever it hits a wall or another robot and then returns to its original behavior.  Its erratic behavior is its avoidance strategy and consequently does not follow any following strategy.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt; Considering its crazy moves, the targeting mechanism lacks the same extremity, it just follows the gun's heading.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt; This robot does not have any criteria for firing.  It just fires when an enemy is scanned.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Fire&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot mostly sits still and only moves when it is hit. It moves back and fort whenever it gets hit each time. Its avoidance strategy is useless if not close to nothing since it only moves so that it never gets hit in the same place twice consecutively. &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt; Its targeting system is basic. It relies on the gun's turning as a way to scan for enemies.&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt; Its firing criteria is to shoot the enemy with a high powered bullet if it's target is close and lower powered bullet when near.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;SittingDuck&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot does nothing therefore there is no avoidance or following strategy.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt; It does not find a target.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt; And does not fire.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Corners&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot moves to the top left corner and just stays there. It changes corner for the next round whenever it dies.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt; Its targeting system is average since it first checks to see if there is a robot in it's path and if there is starts it's custom firing method. It also only scans a 90 degrees radius that is adjusted depending on the corner.  This however could be a potential flaw that limits the robot's firing range since it stops and fires at an enemy before it even gets to it's corner.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt; This robot's firing criteria is to use a bullet power relative to the enemy target's distance.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Tracker&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-style: italic;"&gt;Movement&lt;/span&gt;:&lt;/span&gt; This robot's following strategy is to close in at a chosen target and moves within 100 pixels of that target and fires. It moves back a little if gets too close. &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Targeting&lt;/span&gt;:&lt;/span&gt; Since the robot's strategy is to follow a chosen target and gets close enough to fire, its targeting depends on the gun's turning.&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Firing&lt;/span&gt;:&lt;/span&gt; This robot doesn't have any special criteria.  It mainly shoots a higher powered bullet whenever it gets close to an enemy.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;Upon writing my review for each robots, I realized that the best strategy is to balance the movement, targeting, and firing methods.  All three aspects have overlapping functions that when combined properly can build one of the best robots.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-3435090662246579889?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/3435090662246579889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/robocode-sample-strategies-reviewed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3435090662246579889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/3435090662246579889'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/robocode-sample-strategies-reviewed.html' title='Robocode Sample Strategies Reviewed'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-5420828988030286053</id><published>2009-09-14T00:51:00.003-10:00</published><updated>2009-09-14T01:44:39.441-10:00</updated><title type='text'>Conforming to Java Coding Standards</title><content type='html'>After reading the Elements of Java Style I can't help but admit that my coding style is not that great.  I have used one-line comments placed right next to the code, which I thought seemed convenient since it immediately follows the code it refers to.  Instead I figured that it is better to add it before the code declaration since we are only allowed 100 characters per line, which is part of our class' own coding standard.  Since I imported the &lt;a href="http://ics-software-engineering.googlecode.com/svn/trunk/configfiles/eclipse.format.xml"&gt;Eclipse formatting template&lt;/a&gt; I didn't really have any problems reformatting my robots to&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; conform with the assigned coding standards.  All of the work was changing the javadoc to third person, making sure it ends with a period.  Another thing that I had to do was to add &lt;code  style="font-size:12px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:blue;"&gt;code&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;...&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:blue;"&gt;code&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt; tags since I included method names in my javadoc.&lt;br /&gt;&lt;br /&gt;My updated &lt;a href="http://www2.hawaii.edu/%7Epaulmark/robocode-paulgaliza.jar"&gt;source code&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-5420828988030286053?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/5420828988030286053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/conforming-to-java-coding-standards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/5420828988030286053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/5420828988030286053'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/conforming-to-java-coding-standards.html' title='Conforming to Java Coding Standards'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-4036584919350521060</id><published>2009-09-09T06:13:00.006-10:00</published><updated>2009-09-09T07:19:08.653-10:00</updated><title type='text'>Practice run in Robocode, gearing up for the Big Fight!</title><content type='html'>Robocode is an excellent program that lets users design their robot's function and puts it to the test by facing off with other robots.  For this assignment, we familiarize ourselves to the program by creating simple functions that teaches us movement, radar control and targeting.&lt;br /&gt;These functions are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Movement01: The minimal robot.  Does absolutely nothing at all.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Movement02: Move forward a total of 50 pixels per turn.  If you hit a wall, reverse direction.&lt;/li&gt;&lt;li&gt;Movement03: Each turn, move forward a total of N pixels per turn, then  turn left.  N is initialized to 10, and increases by 10 per turn.&lt;/li&gt;&lt;li&gt;Movement04: Move to the center of the playing field and stop.&lt;/li&gt;&lt;li&gt;Movement05: Move to the upper left corner.  Then move to the lower right corner.  Then move to the upper right corner. Then move to the lower left corner.&lt;/li&gt;&lt;li&gt;Movement06: Move to the center, then move in a circle, ending up where you started.&lt;/li&gt;&lt;li&gt;Tracking01: Pick one enemy and follow them.&lt;/li&gt;&lt;li&gt;Tracking02: Pick one enemy and follow them, but stop if your robot gets within 20 pixels of them.&lt;/li&gt;&lt;li&gt;Tracking03: Each turn, Find the closest enemy, and move in the opposite direction by 100 pixels, then stop.&lt;/li&gt;&lt;li&gt;Firing01: Sit still.  Rotate gun.  When it is pointing at an enemy, fire.&lt;/li&gt;&lt;li&gt;Firing02: Sit still.  Pick one enemy.  Only fire your gun when it is pointing at the chosen enemy.&lt;/li&gt;&lt;li&gt;Firing03:  Sit still. Rotate gun.  When it is pointing at an enemy, use bullet power proportional to the distance of the enemy from you.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Firing04: Sit still.  Pick one enemy and attempt to track it with your gun. In other words, try to have your gun always pointing at that enemy.  Don't fire. &lt;/li&gt;&lt;/ul&gt;The problems that I encountered were from Movement04 and Tracking02.  I thought that movement04 was pretty hard because it involved trigonometry.  After several failed attempts of trying to figure it out on my own, I asked my friend about it and he mentioned  a &lt;a href="http://www.codepoet.org/%7Emarkw/weber/java/robocode/lesson4.html"&gt;website&lt;/a&gt; where he found a code that does what we needed to do for movement04.  The code helped me a lot in figuring out how to do movement04 especially with the trigonometry functions.  As for tracking02 my problem was getting my robot to stop within 20 pixels away from my enemy.  I tried factoring in the sizes of my robot and my enemy into the calculated distance between, since the distance is calculated from the center of each robot, but it never worked.  It is one of the problems I still need to work on.&lt;br /&gt;&lt;br /&gt;All in all I thought that it was a fun assignment.  As challenging as it is, I think that this is a good exercise for us not only to use open source materials but to apply different fields such as Math as tools needed in programming.  My ideas for a competitive robot will most definitely involve Math since I plan to focus on movement and targeting.&lt;br /&gt;My sample code can be found &lt;a href="http://www2.hawaii.edu/%7Epaulmark/Robocode.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-4036584919350521060?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/4036584919350521060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/practice-run-in-robocode-gearing-up-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/4036584919350521060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/4036584919350521060'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/09/practice-run-in-robocode-gearing-up-for.html' title='Practice run in Robocode, gearing up for the Big Fight!'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-7444311828186433033</id><published>2009-08-31T01:13:00.000-10:00</published><updated>2009-08-31T02:25:44.410-10:00</updated><title type='text'>OSS Experience:  TV Guide Browser</title><content type='html'>Goal:  Apply and learn the &lt;a href="http://groups.google.com/group/ics-software-engineering-fall-2009/web/00-prime-directives"&gt;Three Prime Directives&lt;/a&gt; of Java-based Open Source Software&lt;br /&gt;Program: TV-Browser&lt;br /&gt;Source:  &lt;a href="http://sourceforge.net/projects/tvbrowser/"&gt;http://sourceforge.net/projects/tvbrowser/&lt;/a&gt;&lt;br /&gt;Download:  &lt;a href="http://sourceforge.net/projects/tvbrowser/files/TV-Browser%20%28Java%205%20and%20higher%29/2.7.4/tvbrowser-2.7.4.exe/download"&gt;TV-Browser&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Overview:  TV-Browser is a TV guide that gathers information on the shows that the user is interested in.  The program has extensive array of functions that the user can customize to fit their need.&lt;br /&gt;&lt;br /&gt;Prime Directive 1:&lt;span style="font-style: italic;"&gt; The system successfully accomplishes a useful task&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In terms of functionality the program is extensive enough to deliver different user experience by customizing different functions such as favorite shows, specific time slots, show links, user ratings, etc. I find that all of these functions are useful but they are executed in a way that most people would find hard to use.  The manual, that is accessible within the program itself, was useless since it's just a link to the program's Wikipedia page. I also find the whole layout too simple, where the show information are in different panes.  A user might want a good flow of the things he or she needs.&lt;br /&gt;&lt;br /&gt;Prime Directive 2:  &lt;span style="font-style: italic;"&gt;An external user can successfully install and use the system&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I downloaded the program and installed it with great ease.  The installation process was straight forward.  The customization features starts with the installation where the user have choices which services or plug-ins will be installed accompanied by a short description of what they do. &lt;br /&gt;&lt;br /&gt;Prime Directive 3:  &lt;span style="font-style: italic;"&gt;An external developer can successfully understand and enhance the system&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The program have developer-level documentation, which can be found on the developer page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Overall, I find this program very interesting but I would change most of the interface for me to use it more.  All the functionality is included but the program missed on the implementation that would make the program user friendly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-7444311828186433033?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/7444311828186433033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/08/oss-experience-tv-guide-browser.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/7444311828186433033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/7444311828186433033'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/08/oss-experience-tv-guide-browser.html' title='OSS Experience:  TV Guide Browser'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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-6356837882226393187.post-2028353457810101761</id><published>2009-08-30T22:53:00.004-10:00</published><updated>2009-09-16T03:54:20.690-10:00</updated><title type='text'>Fizz Buzz Program</title><content type='html'>It was pretty interesting that the very first thing we did in class, after learning everybody's name and expectations from this class, was to write a comparable program that prospective programmers might expect in a job interview.&lt;br /&gt;The program is called FizzBuzz, which prints the numbers from 1 to 100 and substitutes "Fizz" for numbers divisible by 3, "Buzz" by 5 and "FizzBuzz" by 3 &amp;amp; 5.&lt;br /&gt;&lt;br /&gt;I did manage to write the program correctly but it was a little different from the one we did as a class. For my "FizzBuzz" line I have:&lt;br /&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color:blue"&gt;if &lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;i &lt;/span&gt;&lt;span style="color:gray"&gt;% &lt;/span&gt;&lt;span style="color:gray"&gt;15 &lt;/span&gt;&lt;span style="color:blue"&gt;== &lt;/span&gt;&lt;span style="color:gray"&gt;0&lt;/span&gt;&lt;span style="color:gray"&gt;) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;System.out.println&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;FizzBuzz&amp;quot;&lt;/span&gt;&lt;span style="color:gray"&gt;);&lt;br&gt;&lt;/span&gt;&lt;span style="color:gray"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And as a collective class effort we came up with:&lt;br /&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color:blue"&gt;if &lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;i &lt;/span&gt;&lt;span style="color:gray"&gt;% &lt;/span&gt;&lt;span style="color:gray"&gt;15 &lt;/span&gt;&lt;span style="color:blue"&gt;== &lt;/span&gt;&lt;span style="color:gray"&gt;0&lt;/span&gt;&lt;span style="color:gray"&gt;) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;System.out.println&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;FizzBuzz&amp;quot;&lt;/span&gt;&lt;span style="color:gray"&gt;);&lt;br&gt;&lt;/span&gt;&lt;span style="color:gray"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It was interesting what everybody came up with considering there are different approach for solving the problem. I realized that our class' approach was better in terms of style and efficiency, my approach had two comparisons whereas the class' had only one.&lt;br /&gt;So when I wrote the same program in Eclipse, I used our class' solution.&lt;br /&gt;&lt;br /&gt;Here is my FizzBuzz Code:&lt;br /&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color:green"&gt;/*&lt;br&gt;* Prints out the number from 1 to 100 but&lt;br&gt;* substitute Fizz for all multiple of 3,&lt;br&gt;* Buzz for 5 and FizzBuzz for 3 and 5.&lt;br&gt;*/&lt;br&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;public &lt;/span&gt;&lt;span style="color:gray"&gt;class FizzBuzz {&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue"&gt;public Static &lt;/span&gt;&lt;span style="color:gray"&gt;void main&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:blue"&gt;String&lt;/span&gt;&lt;span style="color:gray"&gt;[] args&lt;/span&gt;&lt;span style="color:gray"&gt;) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue"&gt;for &lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;int i &lt;/span&gt;&lt;span style="color:blue"&gt;= &lt;/span&gt;&lt;span style="color:gray"&gt;1&lt;/span&gt;&lt;span style="color:gray"&gt;; &lt;/span&gt;&lt;span style="color:gray"&gt;i &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;= &lt;/span&gt;&lt;span style="color:gray"&gt;100&lt;/span&gt;&lt;span style="color:gray"&gt;; &lt;/span&gt;&lt;span style="color:gray"&gt;i&lt;/span&gt;&lt;span style="color:gray"&gt;++) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue"&gt;if &lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;i &lt;/span&gt;&lt;span style="color:gray"&gt;% &lt;/span&gt;&lt;span style="color:gray"&gt;15 &lt;/span&gt;&lt;span style="color:blue"&gt;== &lt;/span&gt;&lt;span style="color:gray"&gt;0&lt;/span&gt;&lt;span style="color:gray"&gt;) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;FizzBuzz&amp;quot;&lt;/span&gt;&lt;span style="color:gray"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray"&gt;} &lt;/span&gt;&lt;span style="color:blue"&gt;else if &lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;i &lt;/span&gt;&lt;span style="color:gray"&gt;% &lt;/span&gt;&lt;span style="color:gray"&gt;5 &lt;/span&gt;&lt;span style="color:blue"&gt;== &lt;/span&gt;&lt;span style="color:gray"&gt;0&lt;/span&gt;&lt;span style="color:gray"&gt;) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;Buzz&amp;quot;&lt;/span&gt;&lt;span style="color:gray"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray"&gt;} &lt;/span&gt;&lt;span style="color:blue"&gt;else if &lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;i &lt;/span&gt;&lt;span style="color:gray"&gt;% &lt;/span&gt;&lt;span style="color:gray"&gt;3 &lt;/span&gt;&lt;span style="color:blue"&gt;== &lt;/span&gt;&lt;span style="color:gray"&gt;0&lt;/span&gt;&lt;span style="color:gray"&gt;) &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:darkred"&gt;&amp;quot;Fizz&amp;quot;&lt;/span&gt;&lt;span style="color:gray"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray"&gt;} &lt;/span&gt;&lt;span style="color:blue"&gt;else &lt;/span&gt;&lt;span style="color:gray"&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;&lt;span style="color:gray"&gt;i&lt;/span&gt;&lt;span style="color:gray"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray"&gt;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As for Eclipse, I have been using it as my IDE since ICS111 so I learned a few shortcuts and it took me no less than 4 min to write and run the program with no problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6356837882226393187-2028353457810101761?l=pmgaliza.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pmgaliza.blogspot.com/feeds/2028353457810101761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pmgaliza.blogspot.com/2009/08/fizz-buzz-program.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2028353457810101761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6356837882226393187/posts/default/2028353457810101761'/><link rel='alternate' type='text/html' href='http://pmgaliza.blogspot.com/2009/08/fizz-buzz-program.html' title='Fizz Buzz Program'/><author><name>Paul Galiza</name><uri>http://www.blogger.com/profile/02504723897861476897</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></feed>
