Category Archives: CS-448

Third Sprint Retrospective

Recently, my team completed our third and final Sprint. In this Sprint, I focused mainly on the design on the CheckInventory frontend once again. In the last Sprint, I had updated the header and the footer of the page, so this Sprint, I updated the information display portion of the page. I looked for some inspiration, which I found at the bottom of the WSU Thea’s Pantry page, where they used a white box floating in a gray background. I thought it was a decent design so I interpreted it. I kept the initial box design, except I upsized everything, and removed the title. I put the title floating above the box, bolded and in a dark blue. I increased the size of the font inside the box, and highlighted the weight itself in red. I gave the bottom and right side of the box a small shadow, to give it the illusion of floating. Finally I made the background a soft gray, which eases the eyes a bit better compared to a white background. I created a merge request for this issue, which would allow my teammates to use the code from it and update their own frontends. The last issue I tackled was the navigation bar. Originally, it had links to go to ‘Home’, ‘Check Out’, and ‘Check Inventory.’ I had removed these links from my navbar when I added it as they did not work, but it left the bar a bit bland, and we would need it eventually, so I put back the ‘Home’, and added a ‘Add/Donate.’ I made it so that it underlines when a user hovers over them. When the page is resized, the navbar collapses in a hamburger button. A user should be able to click on this button, which could drop down the options from the navbar. The button did not work, so I spent a bit of time trying to figure it out, only to realize it took eight characters to fix, but regardless it works, and on a mobile phone view as well. I went ahead and fixed some things about it, having it so that the options drop down on the right side of the page instead of the left. The ‘toughest’ part was fixing the design of the hamburger button itself to match the rest of the page. I had to create my own hamburger button in Canva, imported it as an svg file, and then I was able to change the button. I made a merge request for this as well, which allows my teammates to take the svg file and use it on theirs too.

What worked well was communication, we were quick with answers when someone needed something, quick on reviews and merging, etc. It was something we’re always good with, which is good. What worked well for me was still working on the frontend design, again it felt more like something I wanted to do rather than work. I wanted it to look good, and so I gave it my all to make sure it would look nice. Something that didn’t work well was making good use of my time. With the issue about the hamburger button, I had researched a lot and played around with a lot of solutions to get it to work until one did.  Felt like I could’ve figured that out faster, but I didn’t.

I don’t think there’s a lot we can improve on as a team. In my last blog, I suggested a stand up to clarify what we were doing individually, but since we have solidified ourselves into certain parts of the project, we all just knew what each of us were doing. Individually, I could improve on doing more, I felt like I was not doing enough work compared to my fellow teammates. 

A pattern that I can relate to during this Sprint was ‘Read Constantly.’ It basically means although I’m learning all these new and difficult things, there are more difficult things beyond that, and I feel like I won’t be able to catch up. After researching and reading about my issues, I felt this way, not just in this Sprint, but in the previous ones as well. If I had read this pattern before, I don’t think it would’ve changed anything. I still have to read and research my things, ultimately that’s how I grow.

From the blog CS@Worcester – Cao's Thoughts by antcao and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

MR36 | Backend functionality and design consistencies

MR38 | Thank You popup

MR39 | Visual Design Update and Hot-Reloading

MR40 | Max checkout weight set to 30 pounds

These are my merge requests for my finished tasks of connecting the backend to CheckOutGuestFrontend for actual checkout functionality and design consistencies, adding a “thank you” popup after someone checks out, updating the visual design of the frontend to be consistent with the others as well as adding hot reloading upon changes, and setting the max checkout weight to 30 pounds.

For Sprint 3, what worked well for me as an individual was working on a different part of the project, with different challenges and issues than my in the first two Sprints. These new obstacles were exciting for me, and I felt like I was able to learn a lot whilst staying engaged in my work and getting issues resolved. I felt really motivated to complete these issues because of the change of environment.

As a team, I really enjoyed working with all of my teammates and spending time with them in class. Everyone was quite welcoming and trusting of each other, which led to an amicable and fun work environment. Working together with a group of people you can be yourself with is a great experience, and can make it really easy to ask others for help or to admit your mistakes. Our team vibes being high encouraged better communication, and more interest in our work. Being honest with each other worked really well for us.

On an individual level, what didn’t work well, similar to last time, was that I could have been more productive in-class than I was. I got distracted sometimes, and possibly could have been distracting others, but I still got work done. Other than that, I think I did alright.

On a team level, we didn’t have many mishaps or things that didn’t work well. We were able to communicate our issues, what we’re working on, what we need help with, and our merge requests very clearly, and we were quite organized when it came to putting together presentations and updating our issue board. We almost always had everyone present in-class, which helped our productivity substantially.

To improve as a team, we could have done better with ensuring that everyone is on track/working on something, since we never really did the 5-minute standups at the start of each class like we said. Another good idea could have been to involve people in different aspects of the work, rather than everyone sticking to the same place for each Sprint. Giving each member a chance to explore another area of the work would help everyone become well-rounded in their knowledge of the project and in general.

To improve as an individual, I should try to focus a bit more during class, and arrive a bit earlier. I had issues towards the end of the semester with arriving a little later than usual, which hurt my productivity, and I could have missed some important things.

For this Sprint, not many of the Apprenticeship Patterns apply to me, so I’ve decided to go with “ Concrete Skills”. This describes a situation where one wants to work on a good development team, but they don’t have the practical experience. The solution provided is to upgrade your concrete skills and fundamentals, so that you can be immediately useful to the team, thus gaining trust and repertoire faster. This seems very applicable to new grads and people trying to get internships, as they lack the experience to get the job, but feel as if the job could propel their learning forward.

I selected this pattern because as I search for full-time jobs for post-graduation, I find it harder and harder to find companies willing to hire completely new-grads without any professional experience. My time in this class, and this Sprint, have been a solid emulation of a professional working environment, but I know there are many more factors that are involved in an actual company’s development team. I just feel like if I could get that first job and have a good experience, I would learn a substantial amount and feel much more confident about my place in the industry.

If I had read the pattern before/during the Sprint, it would have helped put me on a more focused path towards maintaining the fundamentals of programming, which would allow for professional teams to have more trust in me as a newcomer.

From the blog CS@Worcester – Josh's Coding Journey by joshuafife and used with permission of the author. All other rights reserved by the author.

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 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.