Nathan’s Status Report for Dec 4 2021

What did you personally accomplish this week on the project?

This week I finished up all the functionality of the backend, ironing out any bugs that came up during further testing. This included fixing the response codes from 201 to 200 which is more general. The backend is now very robust and extendable.

For the frontend, I finished all the requirements, such as compartmentalized region viewing. Now, viewers can see which seats are open in a subsection of the space:

I conducted a study on latency on the API calls as well as rendering for the final presentation.  I ran scripts to call the functions

create_hub: 150.2 ms
create_seats: 72.3 ms
delete_hub: 57.0 ms
delete_seats: 82.0 ms
update_seats: 68.2 ms
get_all_free_seats: 123.8 ms
Generalized worst case: 400 ms

Rendering average case: 100 ms, worst case: 200 ms

All these times meet our requirements which is great!

I then spent the rest of the time preparing for the final presentation which went really well.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward. All parts are  is working well, so now I just have to do final extra touch ups on the frontend, such as making it look prettier.

What deliverables do you hope to complete in the next week?

This week, my task it to add final extra touch ups on the frontend,. Specifically, I will add the particles library to the background of the page to give it a more lively, tech feel. I will also be working on the video we must do. I can’t wait! 🙂

 

Nathan’s Status Report for Nov 20 2021

What did you personally accomplish this week on the project?

This week, I worked with JJ to fully integrate the data hub and the public API endpoint of our backend. now, it is working!

Then, I made 15% more progress on the frontend of the project. My idea is to make it very simplistic and easy on the eyes for clients. I restructured the React code to convert from class-based to functional-based code. This is more of an updated coding style with modern react, and it will be extremely helpful due to some of the new frontend requirements (map interface).

Specifically, I now structure components asfunction myComponent() { ... } rather than class myComponent extends React.Component { ... }

This style of coding React has reported to have massive performance improvement and allows for clean, stateless components.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward. Integration is working well, so I just have to finish the frontend component by the final presentation. I will be working hard in the weeks to come.

What deliverables do you hope to complete in the next week?

This week, my task it to complete on the web application frontend. Specifically, I need to implement a map feature that shows clients areas of free seats and quantity of free seats. I can’t wait! 😁

 

Team Status Report for Nov 13 2021

This week, progress has been moving along very well and we were able to present our progress during the demo.  Each of the three main parts of the project (Chairs, Hub, Web) were functioning which was ideal. Now, integration is our next step.

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

Regarding risks, we were able to overcome most of the main risk of the capacitance chair sensors not working. They work well, but need to be improved and made more robust. There are some instances where the threshold value to classify “Occupied” is too high/low, so this needs more calibration. This risk is being managed in our schedule, as we allocated time for this and are on schedule.

Another is the risk of delayed shipping of our parts. We are still waiting for some parts that were delayed in ordering, including Xbee modules. This is allocated for in the ‘slack’ time that we have.

The biggest challenge so far is the Xbee communication. This is mostly an unknown at the moment given the lack of hardware received so far. This also is accounted for in the schedule. If Xbee communication does not work, we have a backup plan of using Bluetooth which the hardware modules support as well. This is not as efficient but at the very least guarantee us correctness and functionality.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

No design changes were necessary this week. The amount of prior time spent designing is beneficial, as now, as a result, the implementation part is smoother.

Nathan’s Status Report for Nov 13 2021

What did you personally accomplish this week on the project?

This week, I worked with JJ to connect the data hub and the public API endpoint of our backend. I also made the post requests of create_hub, create_seats, update_seats, delete_hub, delete_seats, get_free_seats more robust.

Specifically, I fixed a bug when a hub is instantiated without seats. This would make the filtering of seats have an index out of bounds error.  Thus, I fixed this by adding a check for the edge case of empty hubs.

Then, I made 15% more progress on the frontend of the project. My idea is to make it very simplistic and easy on the eyes for clients. The demo showcasing all of this went very well.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward, after our demo. I expect that as we move further into the implementation part, we will have a lot more roadblocks, so I will be working hard in the weeks to come.

What deliverables do you hope to complete in the next week?

This week, my task it to work on the web application frontend. Specifically, 15% this week would keep me on track with respect to the schedule. I can also help JJ and Will on their parts, which currently pose more of a risk, as the software stack basic functionality is stable. I can’t wait! 😁

 

Nathan’s Status Report for Nov 6 2021

What did you personally accomplish this week on the project?

This week, I finished the deployment of the backend server. Now, the backend server is able to handle post requests of create_hub, create_seats, update_seats, delete_hub, delete_seats and the important get request of get_free_seats from the public endpoint of:

https://freeseats-a3.herokuapp.com/

I used Heroku, due to low-costs (free), and focus on deployment of an MVP. However, Heroku has capabilities to handle large load, which will be important if we wanted to scale our project.

This is for use of the data hub component. For integration, I wrote a quick API docs for use of the backend API: https://github.com/FreeSeats-Team/freeseats/blob/web-deploy/web_app/README.md

I made a frontend that is a basic skeleton to simply display data in a list form with elements:

Data_Hub_ID: #_of_free_seats

This will be extended upon to include location and aesthetics.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward, for our demo. I expect that as we move further into the implementation part, we will have a lot more roadblocks, so I will be working hard in the weeks to come.

What deliverables do you hope to complete in the next week?

This week, my task it to work on the web application frontend and polish out the backend if issues arise. For the demo, I hope to have MVP functionality of the frontend with backend integration with the hardware components. After the demo, I will polish out the frontend’s aesthetics and add more robust database entries (with locations, etc.). I can’t wait! 😁

 

Nathan’s Status Report for Oct 30 2021

What did you personally accomplish this week on the project?

This week, I finished the CRUD operations of the backend server. It interacts with MongoDB Atlas as discussed last status report. Now, the backend server is able to handle post requests of create_hub, create_seats, update_seats, delete_hub, delete_seats and the important get request of get_free_seats.

A major change that I implemented was in the database schema. The updated one is as follows:

const Seat = new Schema({
_id:String,
occupied:Boolean,
}
)
const Hub = new Schema({
_id:String,
seats: {
type:Map,
of:Seat
}
}
)
The most significant change here is that the seats are in a Map, rather than an Array. This needed to be done to increase efficiency of indexing / getting a given seat. The Map allows for id-based retrieval in O(1), while the Array is limited to a find of O(n), where n is the number of seats in a datahub.

I ran into many challenges during this stage, as there is a lot to implement and get working with the cloud database. Specifically, I had errors with the routing and retrieving parameters from the request correctly, as well pushing well-formed data to the cloud database. All these errors were solved this week.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward. I expect that as we move further into the implementation part, we will have a lot more roadblocks, so I will be working hard in the weeks to come. We are gradually receiving our ordered products, and so far they all seem to be on schedule!

What deliverables do you hope to complete in the next week?

This week, my task it to continue working on the web application. The main task is to get a public endpoint up and running so that the datahubs can act as the clients interfacing with the server. Additionally, I aim to get 25% progress on the frontend of the website. I can’t wait!

 

Team Status Report for Oct 23 2021

This week, we were able to reflect together on some of the ethical problems that came with our project. These include:

-Someone viewing FreeSeats to steal things when people aren’t there.

-Finding a single person in the library alone as a target for theft or violence.

-Exclusionary to people in wheelchairs.

We thought of solutions to remedy these issues, such as displaying only range of available chairs instead of specific values. Also, we can extend our project to account for those with disabilities with weight sensors if time permits. We will continue to keep these ethical problems in our minds as we implement our project.

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

Progress with the team has been excellent. This week, we focused on the initial implementations of our project. We have been communicating extremely well and feel confident as a team moving forward.

Some risks we face moving forward is the workload of our other courses. As the semester picks up, we all have more auxiliary work to complete. However, we are all on the same page about keeping our Capstone project a high priority. This way, we stay on top of the schedule and make good, incremental progress.

Another is the risk of delayed shipping of our parts. We are gradually receiving the hardware parts we ordered as expected. This includes batteries and Raspberry Pi. However, some of the parts may be delayed this week. We have accounted for this risk by incorporating “slack” time in our schedule so that there is buffer time available. Right now, we feel confident we have enough work to do before the incoming parts arriving which is excellent.

The biggest risk is our hardware capacitance sensor not working. The professor raised this concern to us. Though we feel confident that it will work based on our research , we have accounted for this risk by having a backup plan with the weight sensors. This “backup” plan time is allocated within the slack time for this portion of the implementation.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

No design changes were necessary this week. The amount of prior time spent designing is beneficial, as now, as a result, the implementation part is smoother.

Nathan’s Status Report for Oct 23 2021

What did you personally accomplish this week on the project?

This week, I worked on the ethics portion of Capstone, and reflected a lot on some of the ethical problems that came with our project with the group. These include:

-Someone viewing FreeSeats to steal things when people aren’t there

-Finding a single person in the library alone as a target for theft or violence.

-Exclusionary to people in wheelchairs

I will continue to keep these ethical problems in mind throughout the implementation and create guards in software to remedy them (ie. range of available chairs instead of specific values).

This week, I continued to work on the web application. I continued to bootstrap the cloud storage, MongoDB, which I chose due to accessibility and ease of use within a JavaScript stack. I setup MongoDB Atlas, to store all of our data in the cloud. This was chosen based on my research of cloud storages with the idea of a scalable MVP as a priority.

My basic database schema is as follows:

const Seat = new Schema({
id:String,
occupied:Boolean,
}
)
const Hub = new Schema({
id:String,
seats: [Seat],
}
)

 

I decided to follow a one-to-many hierarchy to match the nature of a study space having multiple chairs. Each seat has a boolean of occupied or not. I implemented this schema to contain the minimal amount of information needed for functionality, as that makes it simpler for our MVP stage.

I also implemented the server skeleton and client skeleton that are able to interface with each other. This is using Express.js, Node.js, and React,js, which is part of the MERN stack. For the server, it supports CRUD operations, as this is the functional minimum of a database server. The client can then interface freely with the MongoDB Atlas cloud database during the development phase.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward. I expect that as we move further into the implementation part, we will have a lot more roadblocks, so I will be working hard in the weeks to come. We are gradually receiving our ordered products, and so far they all seem to be on schedule!

What deliverables do you hope to complete in the next week?

This week, my task it to continue working on the web application. I have to make 25% more progress on the server-side, and get a public endpoint up and running so that the data hubs can act as the clients interfacing with the server. I can’t wait!

 

Nathan Ang’s Status Report for Oct 9 2021

What did you personally accomplish this week on the project?

This week, I worked on bootstrapping the cloud storage (MongoDB) and setting up the skeleton framework of the software stack. It is still a work in progress.

I also helped edit the slides for the our Design Review Presentation, which was a big focus for our group in the beginning of the week.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward. I expect the implementation part to have a lot more roadblocks, so I will be working hard in the weeks to come. I also expect shipping of necessary to take a while, so we will order parts soon (by Monday)

What deliverables do you hope to complete in the next week?

This week, my task it to continue working on the cloud storage and setting up the skeleton framework of the software stack. I will also help the team order necessary components!

Nathan Ang’s Status Report for Oct 2 2021

What did you personally accomplish this week on the project?

This week, I completed research on a good software stack for our use case. I researched different types of popular web software stacks, but ultimately chose MERN due to its smooth learning curve and reported focus on efficiently creating an MVP, which is exactly what we need.

I also completed my slides for the upcoming Design Review Presentation, which was a big focus for our group this week.

Is your progress on schedule or behind?

I am on schedule with my parts and feel confident moving forward. I expect the implementation part to have a lot more roadblocks, so I will be working hard in the weeks to come.

What deliverables do you hope to complete in the next week?

This week, my task is to bootstrap the cloud storage (MongoDB) to be used. If done correctly, I can have an endpoint that the data hub can communicate to our cloud database via.