Category Archives: All

Reef Nexus: Milestone 4

As we approach the end of the semester, we were completing our project Reef Nexus.  Since my last posting, we had about 1 week to implement any enhancements that our professor provided to us as well as fixing any issues since the last milestone.  For the most part, I believe we addressed the main enhancements given to us by our professor.

Our project is working and can be found at http://www.reefnexus.com.

reefms4

 

Issues:

The main issues that I was given was to populate the database with more fishes and to update the guides.

For the first issue, I took a list of fish information from a Wikipedia page that was given to me by Danny.  I had to input an additional 80 fish to the database and double check that the fishes were being added to the table.  While this didn’t involve much code, it was quite tedious to copy and paste the common name, family, genus and species of those 80 fishes into our code.

For the second issue, I took the task of updating the guides with screenshots of the new webpage.

As side from these issues, I tried to tackle other issues when my other group members were working on another project.  One of the issues was to add authentication to the webpage.  I had tried to adopt our professor’s code into our project, but it didn’t work and I had to do some work for another project.  In the end, our group decided that we should focus on the other issues.

As I mentioned, aside from the first two issues; I had helped around and tried to fix errors in our projects.  It seems that our group communication broke down as we were all trying to juggle multiple projects at once.

The last thing I did for the project was to do last minute CheckStyle on our master branch.

Conclusion:

I did enjoy working on this project and the project idea was an interesting one.  However, it was quite stressful trying to juggle multiple projects at once as the semester came to an end.  What I felt was really challenging was moving our application from an in-memory database to Postgres.  Our group had problems with it working correctly with Heroku and I feel that some of us were trying to fix the same issues as another group member.  I know I did, I tried to fix the Postgres issue but it turned out that another member pushed their fix up first.  There are still some issues left for this project and improvements that could be made.  But with the deadline coming up, I feel satisfied with our work and I think we were very successful given a month to get to this point.

Advertisements

Reef Nexus: Milestone 3

Since the last post, we haven’t had any WODs for our software engineering class because we were given the opportunity to work on our project to complete by the deadline.  Our project is called Reef Nexus and as a little refresher, our project is a crowd sourcing system where the public can add their sighting of certain fishes to the database.  We have improved our project using the feedback that we got from our first milestone.  However, we ran into some issues with the third milestone.

For our third milestone, our project can be found at http://www.reefnexus.com

reefms3

 

Milestone 3:

One of the requirements for this milestone was that we had to move our application’s in-memory database to a persistent database.  Our group as a whole learned that this was not a simple task as we were having different issues on each other’s machines.  A major issue that we were encountered was that the database had worked locally, but when we pushed it to Heroku it didn’t work.  The other issue was that as we were testing the application locally, we found that one of the branches made it so that the database would only work on Branden’s computer.

The other improvement is that we had redesigned our page after taking in the feedback given to us from the first milestone.  With the feedback, we redesigned the page so that it would be visible at the beach.  The colors scheme of the page was changed and we made it so that the map of Oahu was the background of the page.

Future Work:

For our project we have a lot of work left to do because there are parts of the application that are broken or unimplemented.  In addition to that, we need to fix the database issue.  When we fix these issues, we will need to load some real fishes into the database as well as implementing any improvements that we get as feedback from our demo.

Data Design Modeling (ER Diagrams)

For this week in our software engineering class, we covered data design modeling.  This isn’t a new topic to me because I have covered this before in my undergraduate database class.  For this week, what we did was make an ERD or Entity Relationship Diagram.  What this diagram does is that, we can use them to describe data using the idea of relationships between the entities.  These diagrams are used to implement the model for a relational database.  For this week, we did 2 WODs in making ERDs where were used a plugin for Google Drive called LucidCharts.

WOD 1: Library Data Model

For the first WOD of the week, we had to create an ERD for a library.  This ERD was used for keeping track of the patrons, reservations, books, loans and copies.  Diving into the WOD, I found that it had been a while since I last did an ERD and as I was making it and looking at the ERD.  I found that I made mistakes and this affected my overall time.  When I was done with my ERD, I checked the video our Professor posted with his solution and I saw that I did it right.  I was able to complete this WOD in about 16 minutes.

ERD-Library - New Page

WOD 2: Car Rental Data Model

For the second WOD of the week, we had to create an ERD just like the previous WOD, but this time it was for a car rental company.  For this data model, the company needed to keep track of the offices in a given city, vehicles, vehicle rentals, reservations of vehicles and the customers.  After doing the first WOD, I got familiar with using LucidCharts and I was able to complete this WOD in about 13 minutes.  I didn’t run into any real trouble with this one other than using the wrong crow’s foot notation, which I changed after double checking my work.

ERD-CarRental - New Page

Conclusion

I think that this week was a good review of ERD.  I like these WODs because they weren’t too hard and it was a refresher of the things I learned in my undergraduate database class.  We will probably have to use an ERD when our group starts moving onto using PostgreSQL to implement our data model.  Hopefully, it will be easier now that we have covered ERDs.

Reef Nexus: Milestone 1

For the past couple of weeks, our group has been working on our project.  With our previous checkpoint, what we did was make mockups of the project.  Now, we have started on implementing some of the features.

For our first milestone, we have our prototype which can be accessed at http://www.reefnexus.com

reefms1

Our project is a crowd sourcing system, where the public will add their sightings of certain fishes to the database.  For our finalized release, we were focusing on the Hawaiian Islands and what we had used for the map of the Hawaiian Islands was the Google Map API.  With our first milestone, we had our map focus on Oahu.

Milestone 1:

For the first milestone, what we had focused on was implementing the map and having it interact with the rest of the application.  With this milestone, we had divided up the work before starting so that we wouldn’t step on each other’s toes.  The work was divided where I would work on the Fish and Location models, while Branden worked on integrating the map and getting it to work with the Location model and finally Danny had worked on the authentication component as well as the core MVC components.

While I only worked on the models, I feel that the work we completed for the milestone was good.  For the functionality, we were able to use the map to access predetermined locations and update the mock database.  Using it was smooth and nothing really lagged.  Now that we have our first milestone completed, we need to continue with our progress and complete more of the functionality.

For our project management, I thought that we were doing okay because we were communicating and doing our parts to finish the milestone.  However, since the time of this posting, we had our Professor critique our work and we found out that our project management was terrible.  We weren’t using the issue features of GitHub correctly.  As a group of 3 we only had about 11 issues and only closed 1, whereas there was another group in our class, whom I felt had the best presentation and they had 100+ issues and closed them when finished.  I think that because our group was so focused on finishing the milestone that we neglect to do the documentation.

Future Work:

For our next milestone, we will incorporate the feedback that we got from Professor Johnson and improve our current work.  I feel that our communication improved for this milestone and we need to keep it up.  What I think I need to do to improve is to get some real data to feed into the database.  The other thing would be to use GitHub’s Issue correctly as well as close any issues that I finished.

Testing and Templates for Play

For this week, we continued learning more about the Play framework by working on templates and testing.  For our Digits application, we have a lot of functionality working but when we look at the code for the forms, there is a lot of repeat code.  This is where templates come into play.

digits

WOD 1: Digits Test

For the first WOD of the week, we had to remove the default integration testing from our Digits project.  In place of this, we had to use either FleuntLenium or HTMLUnit or PhantomJS tests.  For this WOD, our professor provided us with an example Play project that uses FleuntLenium.  I felt that this WOD wasn’t too bad, it did take some time to figure out what I had to do, but I was able to complete this WOD in 35 minutes.  I did have one problem during the WOD which was that my IDE was lagging while I was trying to type.  I had no idea what was causing it, but luckily it didn’t slow down my performance too much.

WOD 2: Digits Text Template

For the second WOD of the week, we had to use a template for our NewContact page to cut down on the repeat code.  For this WOD, our professor had provided us with an example for doing this and it was really easy.  Once we had the template, we had to change the HTML code to use the template.  I was able to finish this WOD in about 13 minutes.  Again with this WOD, there was some lagging as I was trying to type.

WOD 3: Digits Selection

For the third WOD of the week, we added a selection field to our NewContact page.  Basically, what the selection field did was allow the users to select the type of phone number (home, work, mobile) as they added their contacts.  I will admit that I got lost when I was doing this because I would update one file and when I compiled, I would get errors that told me I needed to update the other pages because of this new field.  While I was working on this WOD, I noticed there was a warning about reading the Checkstyle file.  It was with this error that I check the settings for Checkstyle and noticed that it was pulling the rules from our professor’s page.  I changed the setting to point to a local copy and all of the lagging was gone.  I wished I had found this out for the earlier WODs.  Overall, this was a challenging WOD and it took me 44 minutes to complete it.

WOD 4: Digits Custom Template

For the fourth WOD of the week, we made a custom template for the telephone and telephone type fields.  Just like with WOD 2, where we used a template to cut down on repeat code.  We used a template for this WOD too, but we had to make our own template.  For this WOD, making the template for this WOD wasn’t that bad since we were using an existing template and modifying it a little bit.  I was able to complete this WOD in about 15 minutes.

WOD 5: Digits Init

For the fifth WOD of the week, we had to initialize the application with some existing data.  For this WOD, what we had to do was make a Global class for it to initialize some data on start up.  Following the example from Play, I was able to do this WOD with little ease and didn’t run into any trouble.  Overall, I was able to complete this WOD in 13 minutes.

Conclusion

I think that this week’s WODs weren’t too difficult except for WOD 3.  While the WODs were as difficult as last week’s, I feel that the amount of material we covered was a lot more than before.  This is because I felt that for WOD 3, I had to remember exactly what I did if I needed to backtrack and fix a mistake.  Overall, I liked this week’s WODs because I learned more about Play and this will allow us to incorporate everything into our projects.

Reef Nexus

For this week, we started on our Final Projects for our software engineering class.  Initially, I didn’t have an idea for the project.  Luckily for us, we had a day for pitching ideas and gathering teammates.  I was really interested in Danny’s idea for a web application that basically allows users to tag fish and their location around the island.  From there I formed a group with Danny and Branden.

The project was named Reef Nexus and it is a crowd-sourced application that is aimed at divers and fishermen to store the location of fish species.  The application would have a database of Hawaiian reef fish for the Hawaiian Islands.  Where users will be able to choose and store a list of fishes with their location of encounter for their own reference.  The end goal for this project is to make a web application to provide people with information about the various fish species in a specified area.

Plan of attack:

For this project we decided to start with the mockup and divide up the work.  Unfortunately, we didn’t really get a chance to split up the work before the break.  However, we all took the initiative and emailed each other about the project.  What had happened was Danny worked on most of the mockup pages with some help from me and Branden.  Not to be deadweight, I decided to work on the README and Branden was working on adding a map to the webpage.

Mockup:

All of our code and files are currently being hosted on GitHub, most of our code currently use HTML and Javascript.  Since this is a mockup, we wanted to have something to show and will use the Play Framework for our actual project.

Future Plans:

I think that our group did a decent job of working together over the break.  To improve communication between each other, I think that email will not really work that well.  So I think that having a weekly meeting with one another would be a good idea as a way to check each other’s progress and brainstorm.

Overall, I would have to say that this group experience was a positive one.  No one was missing and everyone contributed to the project.  Even though, we didn’t meet during the break, we were able to work together through email and finish our mockup.

MVC (Model-View-Controller) with Play

For this week, we learned more about the Play framework and made a webpage following the MVC (model-view-controller) architecture.  With last week’s WOD introducing us to Play and using it to modify our old sites, the first couple of WODs were simple.  However, they got a lot harder as we started using the Model aspect of MVC.

WOD 1: Digits Mockup

For the first WOD of the week, we had to do a mockup of a webpage using Play.  The webpage that we were making was a digits webpage, where we can take in a user’s name and phone number.  For this WOD, most of the components needed could be found in the Bootstrap documentation.  The first thing was to find a header image and add it to the page.  This wasn’t hard since we have done this for another WOD before.  The other things that we needed to add was just a table and input fields which can be found in the Bootstrap documentation.  Overall, I was able to complete this WOD in about 22 minutes.

WOD 2: Digits Form

For the second WOD of the week, we added a form component to the digits webpage.  Using the New Contacts page, we added some functionality to it where the user input will be printed out to the command prompt.  To do this, we had to make a new view file which was a Java backing class.  Next, we had to use Scala to tell the New Contact page where the user input was for the controller.  I was able to finish this WOD in about 36 minutes and I think that was because of the Scala code and the syntax that we needed to use it.  Another thing that slowed me down was when I was looking for the form template for Scala and the example didn’t work.

WOD 3: Digits Form Validation

For the third WOD of the week, we added a validation component to the user’s input.  What we did for this WOD was ensure that the user didn’t enter an empty field for their first name, last name and telephone.  Doing this WOD was a little bit easier than the previous WOD because we used a Java class for the validation of the input.  If there was an error on the input, we had to use a combination of Scala and Bootstrap to print out the error messages to the page.  It took a little while to figure out how to use Scala with Bootstrap to print out the error message, but I was able to complete the WOD in about 28 minutes.

WOD 4: Digits Model

For the fourth WOD of the week, we had to create a model so that the contact information that the user entered would be displayed to the user on the Home page with the table of Current Contacts.  For this WOD, we had to create a model for the Contact and a Contact database.  Writing the Java class for this and adding the Contact.java and ContactDB.java to the other java files were simple.  When I had to use Scala for displaying the contacts that was a little tricky for me, but luckily I was able to finish this WOD in about 23 minutes.

WOD 5: Digits CRUD

For the fifth WOD of the week, we had to implement a CRUD application (Create Read Update Delete) without the delete feature.  For our WOD, we added more functionality to our digits page, where now users can update their contacts after they have been created and read onto the page.  To update an existing contact, it required an ID field so that we know which contact to modify.  This meant that each contact had a unique ID and we had to include this ID field into the New Contact page.  If we are editing an existing contact, the page will load their ID.  If they are a new contact, the page will pass a 0.  For this WOD it took a while because I had a bug where I didn’t call the fill() method.  This cost me a lot of time, but I was able to finish in 35 minutes.

Conclusion:

I think that this week WODs were quite difficult having to combine 3 different languages together to get a working webpage.  What made it harder was that I had a hard time remembering the syntax for Scala.  Another gripe I had was that IntelliJ had suggest the wrong import for me to use when I was trying to the Play framework’s Form API.  Luckily, I looked this up and it was an easy fix.  I feel that I will need to try these WODs out again to improve since I am learning a new language and how it plays with Play.