Category Archives: CS-448

Sprint 3 Retrospective Blog

In Sprint 3, I did not have a specific personal task. Instead, the sprint was primarily spent working together to fix issues that were generated in Sprint 1 and completing outstanding tasks from Sprint 2. As a recap, in Sprint 1, my task was to add a new date field to the backend API to indicate when a new account was created. In Sprint 2, my task was to modify all endpoints to accept access tokens so that the system could verify whether the request was being made by an authorized user or not.

What was best for me in Sprint 3 was being able to fix bugs that were present, which gave me better insight into the general structure and functionality of the system. Better understanding of backend behavior, especially in how to apply access tokens and authorization, I gained a lot of experience in backend development. What did not work best for me was when we did a merge request, the pipeline failed because of lint comments and tests. My teammate Sean and I were so confused about why the test failed in the pipeline. The error was in an endpoint that we did not even touch when working on our tasks. This is not ideally how I wanted to end the Sprint, however, we did not have enough time to fix this issue.

In general, I believe we worked quite well together as a team. My team was effective at sprint planning and working on each team member’s task well. All members of the team were good at reporting what they had accomplished every week of the sprint. I liked that my team members were always there to provide feedback every week and also helped me when I was not sure how to go about doing my assignment. As we have come to the end of the semester, I honestly do not have much to say about my team improving. In the future, I hope that each team member continues to improve in their personal tasks in their future workplaces where they need to work in a group.

Since Sprint 3 involved less outright ownership and more integration and collaboration work, I found my experience closely relating to the “Be the Worst” pattern in Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye. The “Be the Worst” approach tells programmers to specifically put themselves in situations where they are the least experienced or the least able member of the group. The idea is that this positioning optimizes for growth by allowing you to learn from more experienced colleagues, be challenged by high expectations, and learn good habits by watching and collaborating with others.

I chose this pattern because my experience in Sprint 3 repeated its underlying message. Rather than concentrating on completing work on new tasks, I was deeply involved in teamwork, reviewing and debugging code that I did not write, learning unfamiliar parts of the system, and completing work that demanded a broader view of the backend infrastructure. This made me consider how valuable it is to be in situations where you’re pushed to learn by being around more experienced or otherwise capable coworkers.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/guestinfosystem/guestinfobackend/-/merge_requests/118

From the blog CS@Worcester – computingDiaries by hndaie and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

Gitlab Activity:

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/addinventoryfrontend/-/merge_requests/42

This merge request was made to update the design of AddInventoryFrontend to match the design of CheckInventoryFrontend that Anthony Cao implemented. This was done to maintain consistency and use on-brand color schemes for Worcester State University and Thea’s Pantry. A navigation bar was also added to redirect to the home page, but functionality for this can be added by teams in the future.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/addinventoryfrontend/-/merge_requests/43

This merge request was made to implement a drop-down menu in AddInventoryFrontend. Instead of entering WSUID for submission, users select an option from a drop-down menu characterizing themselves; if ‘Other’ is selected, a comment is required prior to submission.

This was the last sprint of the semester so there wasn’t much that didn’t work well. The team communicated well as usual, consistent merge requests were being made across the InventorySystem – WeightBased and things progressed smoothly. As an individual, I had no issues implementing the drop-down feature in AddInventoryFrontend that the client suggested but I personally struggled with finding work towards the end of the sprint. My teammates also seemed to struggle with this. There was work to be done, but the end of the semester offered an awkward phase of trying to still get things done while not taking on a task too large that would surpass the remainder of the time in the semester. AddInventoryFrontend seemed to be at a stage where significant changes would have to be done at a later date, so I ended up assisting Guilherme Salazar Almeida Nazareth with writing tests using Mocha and Chai for InventoryBackend. He was able to wrap this up in time for our sprint demo. No changes were needed during this semester to work effectively as a team, we mostly just had to focus on finishing up strong.

The pattern I choose from “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye” to describe Sprint 3 is “The Deep End.” This references the fear of taking too much on at once due to not feeling comfortable/ready to do so. The want to grow your skills or portfolio while feeling a sense of imposter syndrome is a very common thing. I think this accurately describes the end of the semester for my team because although everyone still had work to do, we feared taking on too large a task for fear of not finishing it in time. But reflecting on this, it might have been better to start a large task and give future teams a template to work with instead of not trying to develop anything larger at all. If I read this pattern at the beginning of the sprint, I probably would have put my Scrum Master title to use and encourage myself and my teammates to take on larger tasks and assure them that with proper documentation and descriptions on Gitlab, we’d actually be helping future teams with their work. 

From the blog CS@Worcester – Shawn In Tech by Shawn Budzinski and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

In this post, I’ll be reflecting on our third and final sprint towards developing and implementing an Identity and Access Management system for Thea’s Pantry. Coming out of Sprint 2, we had an almost-fully-functional proof of concept which integrated a mock frontend capable of calling out to Keycloak to require authentication, getting an access token, and passing that token to the backend for authentication and validation. Our goal for sprint 3 was to fully implement production microservices for Keycloak, the IAMBackend, and the IAMFrontend. These goals may not have been explicitly defined like that at the beginning of the sprint, but that ended up being our objective. We also wanted to have finalized documentation that explains our implementation and design choices.

Some of my personal work towards that goal was as follows:

GitLab

  • Documenting our low-level issues in GitLab and assigning them accordingly. I put additional focus/effort this sprint into properly linking related issues, blockers, and tracking various key information in comments, as opposed to just using issues as a task list. Epic

  • Document and ticket/issue any outstanding work that is necessary but out of the time constraints of this sprint / the semester. Approaching the end of the semester, there is still some necessary work to fully implement our microservices, but there is not enough time to complete it all. I have gone through and added any issues I can think of.

Backend

  • Fully implement an IAMBackend that mirrors the structure of the GuestInfoBackend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMBackend instead of GuestInfoBackend

    • Removing files and code that does not apply to IAMBackend, such as messageBroker.js

    • Modifying backend endpoint code to finalize it

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

  • I will be tying up some loose ends and hopefully merging IAMBackend before “finishing” the semester.

Frontend

  • Fully implement an IAMFrontend that mirrors the structure of the GuestInfoFrontend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMFrontend instead of GuestInfoFrontend

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

    • Adding and reconfiguring bin scripts as necessary

    • Doing frontend Vue work to actually create a redirect page

  • I will be tying up some loose ends and hopefully merging IAMFrontend before “finishing” the semester.

PantryKeycloak

Just providing a link to the repository because I am the only one that has touched it, all work in there was done by me. PantryKeycloak

  • Fully configure and implement a production Keycloak repository

  • Add all custom settings for the TheasPantry Realm

  • Create an entrypoint script that automatically exports and saves all changes to the realm

Documentation

Documentation Repository

  • Finalize and write a lot of documentation

I feel like this sprint was a rough one across the board. I could definitely tell people were on the home stretch and sliding towards the end of the semester. I think people did good work, and our class meetings worked well for us; we always came to agreements and had purpose. I feel like we were working very slowly though, and at times, I felt like I was taking the bulk of the issues on myself. I think I could work on that as an individual, and understand that it is not necessarily my job to make sure every single thing gets done. I am very mission-oriented, so I naturally do that, despite the cost to myself. I feel like as a team, we could have paid more attention to each other and what people’s workloads looked like. That might have allowed us to work better together and be more mindful of our own deadlines and how we can help each other.

The pattern I have chosen for this sprint is Dig Deeper. This pattern describes learning things at a level where you truly understand why they are the way they are, how they work, and how to use them. I think it is relevant because the more I tried to learn how the different services and Docker interact, the better I was able to understand and implement solutions. If I had read this prior, I may have focused more on understanding before trying to implement, as opposed to while.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

In this post, I’ll be reflecting on our third and final sprint towards developing and implementing an Identity and Access Management system for Thea’s Pantry. Coming out of Sprint 2, we had an almost-fully-functional proof of concept which integrated a mock frontend capable of calling out to Keycloak to require authentication, getting an access token, and passing that token to the backend for authentication and validation. Our goal for sprint 3 was to fully implement production microservices for Keycloak, the IAMBackend, and the IAMFrontend. These goals may not have been explicitly defined like that at the beginning of the sprint, but that ended up being our objective. We also wanted to have finalized documentation that explains our implementation and design choices.

Some of my personal work towards that goal was as follows:

GitLab

  • Documenting our low-level issues in GitLab and assigning them accordingly. I put additional focus/effort this sprint into properly linking related issues, blockers, and tracking various key information in comments, as opposed to just using issues as a task list. Epic

  • Document and ticket/issue any outstanding work that is necessary but out of the time constraints of this sprint / the semester. Approaching the end of the semester, there is still some necessary work to fully implement our microservices, but there is not enough time to complete it all. I have gone through and added any issues I can think of.

Backend

  • Fully implement an IAMBackend that mirrors the structure of the GuestInfoBackend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMBackend instead of GuestInfoBackend

    • Removing files and code that does not apply to IAMBackend, such as messageBroker.js

    • Modifying backend endpoint code to finalize it

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

  • I will be tying up some loose ends and hopefully merging IAMBackend before “finishing” the semester.

Frontend

  • Fully implement an IAMFrontend that mirrors the structure of the GuestInfoFrontend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMFrontend instead of GuestInfoFrontend

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

    • Adding and reconfiguring bin scripts as necessary

    • Doing frontend Vue work to actually create a redirect page

  • I will be tying up some loose ends and hopefully merging IAMFrontend before “finishing” the semester.

PantryKeycloak

Just providing a link to the repository because I am the only one that has touched it, all work in there was done by me. PantryKeycloak

  • Fully configure and implement a production Keycloak repository

  • Add all custom settings for the TheasPantry Realm

  • Create an entrypoint script that automatically exports and saves all changes to the realm

Documentation

Documentation Repository

  • Finalize and write a lot of documentation

I feel like this sprint was a rough one across the board. I could definitely tell people were on the home stretch and sliding towards the end of the semester. I think people did good work, and our class meetings worked well for us; we always came to agreements and had purpose. I feel like we were working very slowly though, and at times, I felt like I was taking the bulk of the issues on myself. I think I could work on that as an individual, and understand that it is not necessarily my job to make sure every single thing gets done. I am very mission-oriented, so I naturally do that, despite the cost to myself. I feel like as a team, we could have paid more attention to each other and what people’s workloads looked like. That might have allowed us to work better together and be more mindful of our own deadlines and how we can help each other.

The pattern I have chosen for this sprint is Dig Deeper. This pattern describes learning things at a level where you truly understand why they are the way they are, how they work, and how to use them. I think it is relevant because the more I tried to learn how the different services and Docker interact, the better I was able to understand and implement solutions. If I had read this prior, I may have focused more on understanding before trying to implement, as opposed to while.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

In this post, I’ll be reflecting on our third and final sprint towards developing and implementing an Identity and Access Management system for Thea’s Pantry. Coming out of Sprint 2, we had an almost-fully-functional proof of concept which integrated a mock frontend capable of calling out to Keycloak to require authentication, getting an access token, and passing that token to the backend for authentication and validation. Our goal for sprint 3 was to fully implement production microservices for Keycloak, the IAMBackend, and the IAMFrontend. These goals may not have been explicitly defined like that at the beginning of the sprint, but that ended up being our objective. We also wanted to have finalized documentation that explains our implementation and design choices.

Some of my personal work towards that goal was as follows:

GitLab

  • Documenting our low-level issues in GitLab and assigning them accordingly. I put additional focus/effort this sprint into properly linking related issues, blockers, and tracking various key information in comments, as opposed to just using issues as a task list. Epic

  • Document and ticket/issue any outstanding work that is necessary but out of the time constraints of this sprint / the semester. Approaching the end of the semester, there is still some necessary work to fully implement our microservices, but there is not enough time to complete it all. I have gone through and added any issues I can think of.

Backend

  • Fully implement an IAMBackend that mirrors the structure of the GuestInfoBackend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMBackend instead of GuestInfoBackend

    • Removing files and code that does not apply to IAMBackend, such as messageBroker.js

    • Modifying backend endpoint code to finalize it

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

  • I will be tying up some loose ends and hopefully merging IAMBackend before “finishing” the semester.

Frontend

  • Fully implement an IAMFrontend that mirrors the structure of the GuestInfoFrontend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMFrontend instead of GuestInfoFrontend

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

    • Adding and reconfiguring bin scripts as necessary

    • Doing frontend Vue work to actually create a redirect page

  • I will be tying up some loose ends and hopefully merging IAMFrontend before “finishing” the semester.

PantryKeycloak

Just providing a link to the repository because I am the only one that has touched it, all work in there was done by me. PantryKeycloak

  • Fully configure and implement a production Keycloak repository

  • Add all custom settings for the TheasPantry Realm

  • Create an entrypoint script that automatically exports and saves all changes to the realm

Documentation

Documentation Repository

  • Finalize and write a lot of documentation

I feel like this sprint was a rough one across the board. I could definitely tell people were on the home stretch and sliding towards the end of the semester. I think people did good work, and our class meetings worked well for us; we always came to agreements and had purpose. I feel like we were working very slowly though, and at times, I felt like I was taking the bulk of the issues on myself. I think I could work on that as an individual, and understand that it is not necessarily my job to make sure every single thing gets done. I am very mission-oriented, so I naturally do that, despite the cost to myself. I feel like as a team, we could have paid more attention to each other and what people’s workloads looked like. That might have allowed us to work better together and be more mindful of our own deadlines and how we can help each other.

The pattern I have chosen for this sprint is Dig Deeper. This pattern describes learning things at a level where you truly understand why they are the way they are, how they work, and how to use them. I think it is relevant because the more I tried to learn how the different services and Docker interact, the better I was able to understand and implement solutions. If I had read this prior, I may have focused more on understanding before trying to implement, as opposed to while.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

In this post, I’ll be reflecting on our third and final sprint towards developing and implementing an Identity and Access Management system for Thea’s Pantry. Coming out of Sprint 2, we had an almost-fully-functional proof of concept which integrated a mock frontend capable of calling out to Keycloak to require authentication, getting an access token, and passing that token to the backend for authentication and validation. Our goal for sprint 3 was to fully implement production microservices for Keycloak, the IAMBackend, and the IAMFrontend. These goals may not have been explicitly defined like that at the beginning of the sprint, but that ended up being our objective. We also wanted to have finalized documentation that explains our implementation and design choices.

Some of my personal work towards that goal was as follows:

GitLab

  • Documenting our low-level issues in GitLab and assigning them accordingly. I put additional focus/effort this sprint into properly linking related issues, blockers, and tracking various key information in comments, as opposed to just using issues as a task list. Epic

  • Document and ticket/issue any outstanding work that is necessary but out of the time constraints of this sprint / the semester. Approaching the end of the semester, there is still some necessary work to fully implement our microservices, but there is not enough time to complete it all. I have gone through and added any issues I can think of.

Backend

  • Fully implement an IAMBackend that mirrors the structure of the GuestInfoBackend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMBackend instead of GuestInfoBackend

    • Removing files and code that does not apply to IAMBackend, such as messageBroker.js

    • Modifying backend endpoint code to finalize it

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

  • I will be tying up some loose ends and hopefully merging IAMBackend before “finishing” the semester.

Frontend

  • Fully implement an IAMFrontend that mirrors the structure of the GuestInfoFrontend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:

    • Refactoring comments and text to apply to an IAMFrontend instead of GuestInfoFrontend

    • Updating dependencies

    • Ensuring the GitLab build processes function as expected

    • Adding and reconfiguring bin scripts as necessary

    • Doing frontend Vue work to actually create a redirect page

  • I will be tying up some loose ends and hopefully merging IAMFrontend before “finishing” the semester.

PantryKeycloak

Just providing a link to the repository because I am the only one that has touched it, all work in there was done by me. PantryKeycloak

  • Fully configure and implement a production Keycloak repository

  • Add all custom settings for the TheasPantry Realm

  • Create an entrypoint script that automatically exports and saves all changes to the realm

Documentation

Documentation Repository

  • Finalize and write a lot of documentation

I feel like this sprint was a rough one across the board. I could definitely tell people were on the home stretch and sliding towards the end of the semester. I think people did good work, and our class meetings worked well for us; we always came to agreements and had purpose. I feel like we were working very slowly though, and at times, I felt like I was taking the bulk of the issues on myself. I think I could work on that as an individual, and understand that it is not necessarily my job to make sure every single thing gets done. I am very mission-oriented, so I naturally do that, despite the cost to myself. I feel like as a team, we could have paid more attention to each other and what people’s workloads looked like. That might have allowed us to work better together and be more mindful of our own deadlines and how we can help each other.

The pattern I have chosen for this sprint is Dig Deeper. This pattern describes learning things at a level where you truly understand why they are the way they are, how they work, and how to use them. I think it is relevant because the more I tried to learn how the different services and Docker interact, the better I was able to understand and implement solutions. If I had read this prior, I may have focused more on understanding before trying to implement, as opposed to while.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective Blog

Sprint 2 really changed the way I see collaboration. As an introvert, I used to be scared of team projects and working with others. But during this sprint, that mindset shifted completely. It turned out to be fun and rewarding to collaborate with a team where everyone was understanding, supportive, and eager to learn together. After receiving helpful feedback at the end of Sprint 1, we had a much clearer understanding of what needed to be done. In Sprint 1, we struggled a lot with confusion and having different views, but this time around, we had a shared direction that made a big difference.

Throughout Sprint 2, we faced more complex problems than before. My partner and I worked on several issues based on the feedback we received, as well as on things we identified as a team. Our main priorities were fixing the camera mirroring issue on the UPC scanner, updating the frontend’s visual identity, and adjusting the layout for mobile and tablet devices.

We successfully fixed the mirroring issue, which felt like a big win. However, aligning our frontend designs with the other teams was much more difficult than we anticipated. Initially, we had decided on a color palette, fonts, logos, and design styles that we thought represented the project well. Midway through the sprint, though, we were given Worcester State University’s Visual Identity Guidelines, and suddenly, everything we had designed had to be reworked. It was frustrating to undo what we had already built, but it taught us the importance of flexibility and communication.

Another major challenge we encountered  and that we had to push into Sprint 3, was getting our web app running on a server rather than just locally. We started working on it, but deployment turned out to be trickier than we expected.

Here’s a look at some of the issue we were working on:

Overall, I think our team worked really well together this sprint. Despite the technical obstacles, especially around connecting the frontend and backend, we stayed positive and pushed through. We were eventually able to connect both parts and present a working version of the app to the customer, which was a great feeling. As a team, one area we could improve on is making sure everyone is on the same page and updated about what the different sub-teams are working on. Sometimes there were minor moments of confusion because different people had slightly different ideas of where each group was at. It wasn’t a major issue this sprint, but better communication would definitely help prevent misunderstandings and keep us even more organized. On a personal level, I realized that learning never really stops when you’re working in the tech industry or when you’re a developer. If there’s something I want to improve on, it’s learning new concepts more quickly. Being able to pick up new ideas faster would help me feel more confident during team discussions and allow me to contribute more effectively.

 In the Apprenticeship Patterns book by Dave Hoover and Adewale Oshineye, one pattern really stood out to me this sprint: “Rubbing Elbows.” It talks about the importance of working closely with more experienced peers and teammates. Instead of trying to learn everything on your own, this pattern encourages you to learn through collaboration, by watching how others work and asking questions. I chose this pattern because it perfectly describes what changed for me. This sprint  working side-by-side with my teammate helped me learn so much faster than I could have on my own. If I had read about “Rubbing Elbows” earlier, I think I would have embraced collaboration a lot sooner instead of seeing it as something intimidating. It would have reminded me that it’s okay and even expected  to learn through other people, not just through personal effort.

From the blog CS@Worcester – CodedBear by donna abayon and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective

During Sprint Two, my main task was troubleshooting an issue with sending data to MongoDB and its connection within Docker. Initially, a teammate had trouble sending the fake data from RabbitMQ to MongoDB. The data was reaching the RabbitMQ queue, but there were problems with the consumer. I suggested that we seed fake data directly into the database so we could work on calculating totals and building the report. When working on that, it soon became clear that the issue was not the consumer but the connection to MongoDB itself. Even with the database running and showing access to an empty database on the browser, we could not add the fake data from the queue. Further attempts to connect to the database did not work. At the end of the sprint, we decided to split the data transfer portion into another subproject for sprint three.

This was the main experience for half of the team, while the others worked on JSDoc, calculating report totals, and developing the frontend. We faced setbacks throughout the sprint but collaborated well and tackled the problem from different angles each week. Unfortunately, the troubleshooting process regarding the MongoDB connection bore no fruit. We misidentified the problem early on, which took some time, but this was mostly due to our inexperience with Docker. When comparing and implementing the guestinfobackend with our backend, I grew consistently confused about what was causing the issue and believed it had something to do with using the docker container we did not understand.

Moving the data transfer portion to a different subproject seemed like the best approach. It will move us around the roadblock we hit and give us an achievable goal for sprint three. Although we could not solve the issue, I still learned a lot about MongoDB, MongoDB Compass, how to seed fake data, the docker-compose, and how Docker can complicate connections between different services.

Our team did not initially understand the extent of the problem, and in hindsight, we should have had all teammates working on the issue earlier. We assumed the roadblock would be resolved quickly, but we should have brought the rest of the team in after week two. Our communication in and out of class has been fine, but while we were stuck on the database, I believe similar roadblocks on the frontend side were being downplayed. Since we are no longer stuck on the database, I will focus on helping with the frontend during sprint three.

Individually, I need to deepen my understanding of Docker containers networking and ports. None of the attempts produced functional or testable changes, and we actively discussed what we tried each week, so it was disheartening not having anything to commit. I was scrapping entire changes and trying different approaches constantly to no avail.

The apprenticeship pattern reflecting my experience for this sprint would be “Learn How You Fail.” This pattern emphasizes analyzing the reason for your failures and not dwelling on them. Understanding what led to the failure, like incorrect conclusions, gaps in knowledge, or missed details, can turn something frustrating into a learning opportunity. I chose this pattern because the sprint was full of failed attempts. Despite researching and testing each week, we could not solve the problem. Initially, it was frustrating, but seeing it as part of the process makes more sense when stuck. Our group talked about our lack of experience in Docker, and it helped us to know what we needed to work on and that I was not the only one confused. If I had read this pattern earlier, I may have worked on the issue with less frustration and more patience.

While I did not make any commits this sprint due to the unresolved database issue, I was consistently involved in troubleshooting the MongoDB connection issue alongside my team, as shown in the weekly reports.

From the blog CS@Worcester – KindlCoding by jkindl and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective Blog

My task in Sprint 2 was to modify all endpoints to accept access tokens that will determine the system whether the request is from an authorized individual making that request. The goal is that these tokens will let the system know if the requester is authorized. But this can only happen after the IAM team figures out how the tokens will work. In this sprint, I collaborated very closely with my partner Sean Kirwin.

What was best for me in Sprint 2 was to work with Sean and continue to work on the backend. I was working on an issue that I am comfortable with again. I was also able to continue a task that was in progress from the previous sprint.

As a team, we still managed to get along. Communication from my teammates was really the best. Every individual could complain about what issues they were facing, why they were late to class or missing class, and was helpful whenever someone needed help from a teammate. Every week, my teammates were always there to offer helpful criticism, and I appreciated their help when I needed it. They also answered my questions about how to proceed with my assignment. I know that there is always room for improvement. However, I think that my team did very well in this sprint and we did not have any major issues during this sprint.

Relying on another team was somewhat challenging for me. We were not able to accomplish as much as needed because we were waiting to see how the tokens will be, as it is the IAM team’s decision to make that. Although we keep communicating with them on Discord, in my opinion, we should have sat down and spoken face-to-face or on Zoom so that we can better understand each other’s views. I sort of felt like both teams were getting a bit mixed up with each other’s arguments. The pattern I associated with from the Apprenticeship Patterns book was “Create Feedback Loops”. Here in this chapter, it highlights the importance of constant, actionable feedback in speeding up learning and improvement in the journey of an apprentice towards mastery. Feedback loops facilitate the discovery of weaknesses, confirm progress, and hone skills. They are imperative to move from apprentice to journeyman and later to master because they enable self-awareness and incremental improvement.

I chose this pattern because it is so closely related to what was happening in the sprint. Although it is stated not to move/work on tasks from the previous sprint, I managed to do so because I had the time available to complete a small mistake that was executed in sprint 1 in order to wait for feedback from the other group so that I could work on my task in sprint 2. I was able to learn the feedback from my other team members and rectify the small mistakes done during sprint 1. The “Create Feedback Loops” pattern helped me to step back, hear the feedback from my peers, and strategize on how to improve.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/guestinfosystem/guestinfobackend/-/issues/141

From the blog CS@Worcester – computingDiaries by hndaie and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospect

In sprint 2 my team and I actually got the project functioning as we had intended. We now have a webpage with a scanner that can read UPC codes off any product we can find. A fetch script that takes that UPC code and uses an FDA API to give us data on the product. This data includes brand, brand owner, product category and a description. This data is then merged into our back end and stored with a quantity that gets manually entered. 

While demoing the webpage our customer seemed very interested in it and how user friendly we had made it. They seemed concerned about having to scan every individual product until they saw that you only needed to edit the quantities after scanning one single time. There is only one issue we have in that regard. We are not able to find absolutely any products data in that FDA API. However we are in the process of creating manual entries that will be saved, so it will only be a problem the first time that item is scanned. Attempting to keep our theme of user friendliness.

It has been cool and very rewarding for the team to actually see our project function this way. We’ve all done projects where things don’t really get to the point of looking and functioning like a completed product. This is a first for a few of us.

Our communication with each other during the weeks has stayed pretty consistent throughout this entire semester. I would say that is the strongest characteristic of this team. We all hold each other accountable by just being visible and seeing the others working hard to get this done.

Relating our team with a chapter from the book apprenticeship patterns, a good one would be – be the worst. With our strong communication and the fact we are putting the different parts of our project together into one product. We all noticed the strengths each member has to offer. All though this does not perfectly match the example of the book by surrounding yourself with a full team that is better than you. I think we have all done a good job at noticing each other’s strengths and understanding of each portion. This sprint showed how much we really started to learn and grow as a team. 

After sprint one I wanted to make it clearer for everyone to understand what each part of the team was doing and where they were at. This sprint actually managed to do a lot of this for me. While putting the pieces together everyone really started to see the full picture and there was points when you could see the excitement across everyone’s face when things started to shape up and start working. This also proved to create a more cohesive team as the pairs that had been working in a more broken off system were having to explain what they did in order to get certain parts to function properly. Now that everyone’s working in the same directories we all witness the fast pace of progress we have had the whole time, that I believe I was the only one really witnessing.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend

-this is the current state of our project. It has a working webpage, back end and fetch script that works between them.

Start up:

  • start the backend using bin/rebuild.sh
  • Install the live server extension on vscode
  • Right click scanner.html and open with webpage
  • Start scanning items =]

From the blog CS@Worcester – Mike St G – 448 by Michael St. Germain and used with permission of the author. All other rights reserved by the author.