Category Archives: CS-448

An Initial Introduction to LibreFoodPantry and Thea’s Pantry

Reading over the LibreFoodPantry website, the first piece that really stuck out to me was their Mission statement; Unsurprisingly, I know. Furthermore, their mission statement was not about “How to become profitable” or “Why we are better than other food pantries” but it was simply: a community of students and faculty using software to help society. From this alone, I could tell that this food pantry is going to be great to participate in. Complimenting this was their Code of Conduct section which highlights their mission statement. It truly shows their importance of creating a safe, healthy, and friendly environment.

In Thea’s Pantry GitLab Group, I found the architecture to be interesting; more so, to hyperfocus, the architecture of the reporting system. Myself, being part of the Identity and Access Management team, I found it very insightful to know when a user logs in how it is “talking” to the frontend and with the backend, servers and all. Furthermore, the class I took last semester, CS-343, is really prevalent now being able to analyze the architecture. With that being said, I can recognize that there is still a lot to be learnt on the actual implementation of all the relationships with one another; will be a great opportunity to learn and implement.

From the blog CS@Worcester – Programming with Santiago by Santiago Donadio and used with permission of the author. All other rights reserved by the author.

Back Again

Hello! I am back and in my final semester. I have evolved from talking about code into being directly involved in code. Time flies! I remember when I first started doing these blogs learning about Agile and clean code.

Anyway, to prepare for my capstone project I have looked through LibreFoodPantry’s main page and Thea’s Pantry’s GitLab group. One thing that interested me from LibreFoodPantry’s website is the page on the Code of Conduct. It displays the pledge and describes the food pantry’s standards and enforcement responsibilities. It also lists enforcement guidelines and displays a list of people in charge of enforcement and provides a means of communication. I chose it since I believe it is extensive for a food pantry. I am aware that people can lie and steal but it seems so meticulous. It is also surprising that sexual harassment is mentioned. I never thought that people would be sexually harassed in a food pantry. One thing that interested me from Thea’s Pantry’s GitLab was the Thea’s Pantry Deployment Full Integration diagram. It demonstrates all the functions of the application. It stood out to me since it is interesting to see how the application functions especially considering what I will work on this semester.

From the blog My Journey through Comp Sci by Joanna Presume and used with permission of the author. All other rights reserved by the author.

LibreFoodPantry

After reviewing their website, I’d first like to talk about their Mission. Just as discussed their goal is to expand a community that assists food pantries with free software to better serve their purpose of helping others. They provide students with actual working experience and the ability to see that their computing skills can improve society. This is supported via the idea of their software being FOSS, a humanitarian software project that supports their ideals and provides good overall. I chose to talk about their mission because as a CS student at WSU, I will be working closely with LibreFoodPantry and knowing that their goals are to improve local society is a good feeling. I believe that if students know that their work has an actual impact or improvement for other’s lives than it would be a fulfilling project that stimulates growth for them.

Moving onto their Code of Conduct, this is something that is very important to adhere to due to the communal nature of LibreFoodPantry. Having a Code of Conduct like LibreFoodPantry’s is to make sure that everyone feels accepted and isn’t ashamed to reach out to support or ask for help. Having standards is the norm and their code of conduct is more than acceptable for their goals. They discuss their expected behavior and unexpected behavior as well as who to reach out to if you see or experience anything unacceptable. They also explain what would happen if one were to break their code of conduct, from warnings all the way to a permanent ban on any interaction within the community. This was interesting enough for me to write about because I believe that everyone should be informed of the code of conduct and should act with this in mind.

https://librefoodpantry.org/

From the blog CS@Worcester – Coding with Tai by Tai Nguyen and used with permission of the author. All other rights reserved by the author.

Introductory Blog Post

My name is William Cordor, and this is my introductory blog post. I took time to read more about LibreFoodPantry and Thea’s Pantry and found a lot of interesting things.

LibreFoodPantry

Something interesting I found while on the LibreFoodPantry site is that our very own Professor Wurst has been a trustee and shop manager in the coordinating committee since 2019. I found it pretty commendable that he plays a part in an FOSS that helps the community, and involves people from various colleges. Six years is also not a short time to be a part of something.

Thea’s Pantry

While browsing through the GitLab for Thea’s Pantry, I found that there are three main groups for InventorySystem. Guessing from previous GitLab repositories, I always imagined there would be one big system for each function of the project that’s split into multiple subgroups. But it made much more sense why there are three main groups once I read the descriptions for them. InventorySystem Category-Based helps track pantry inventory based on the different categories, InventorySystem Culling aids with removing inventory based on expiration dates, and InventorySystem Weight-Based assists with tracking pantry inventory based on weight. These 3 categories most likely require much logic and specifications, so it would be wise to split them into 3 groups based on what they help with.

From the blog CS@Worcester – Blog del William by William Cordor and used with permission of the author. All other rights reserved by the author.

First Impressions of Capstone: LibreFoodPantry & Thea’s Pantry

I’m genuinely excited about this first blog post for our Capstone! This course feels like a real step into professional software engineering, and I’m eager to learn as much as I can. I also hope our professor challenges us rigorously, helping us approach problems like true professionals in the field.

From LibreFoodPantry, I was surprised and excited to see AWS as a sponsor, it’s amazing to have industry support for student projects. Another highlight was the section on authorship under licensing. It reminded me that Git tracks all contributors and that co-authors should be credited for collaborative work, a detail many students often forget. I also learned about the Shop Manager role, responsible for shop activities with elevated privileges. Maybe one day I’ll be back as a Shop Manager, joking, but also serious!

From Thea’s Pantry, everything finally clicked. Reading the developer documentation, I understood why we took all the other courses (and realized, laughing at myself, that even while juggling work and personal projects, every course actually mattered!). The User Stories, Architecture, Technology choices, Workflow, and Release Process all made sense, especially because my personal projects gave me context (check my GitHub!). I found the Git conventional commit messages particularly useful and plan to start practicing them. I also appreciated the faculty’s points on architecture naming conventions, which are surprisingly valid. One curiosity: there are two systems requiring third-party solutions, I wonder why we couldn’t design them ourselves, especially something like the IAM System.

Overall, I’m incredibly excited for this Capstone and expect to gain a lot from it. This semester promises to be both challenging and rewarding!

From the blog CS@Worcester – Rick’s Software Journal by RickDjouwe1 and used with permission of the author. All other rights reserved by the author.

Thea’s Pantry Blog

I found the mission tab very interesting upon reading about it. I really like this whole project idea as a whole and the “mission” tab is well put together in the sense that it describes very well what the pantry is for. The goal to be able to teach students while also helping out the community is a very nice touch. I am looking forward to learning more about it and how all the years of learning are going to be put to use in how the pantry works as well as how to work on a team environment on a real project. I appreciate this project because I think this will help me understand team work and how bigger applications are planned out and executed. I am used to working on things alone so this will put to the test how I can work with others as well as learning at the same time from others. I chose to write about this because not a lot of colleges do this for students. Also a lot of internships lately require “3 years or more” of experience that a lot of students don’t have and this is a way to show the experience we have gained over the years as well as to show that this is a project that I have worked on and gained a lot of valuable information. I also believe this is a great opportunity in general to test my skills as a developer. The website as a whole is pretty neat too.

From the blog Cinnamon Codes by CinCodes and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

Assigned Gitlab Issues

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/deployment/gitlab-profile/-/issues/23

Continued and finished the development of the launch page for Thea’s Pantry

Reflection

During this sprint I wish I was better about just starting my work. Often I kept delaying it because I was worried about problems down the line that haven’t even occurred yet. Another thing i should’ve done was just ask for help regarding the page when i wasn’t sure on what to do. If I had just asked then I would have saved myself a lot of headaches. This could also apply to asking for help regarding keycloak. Because at many points I was confused about how the tokens worked, or what roles I had to account for. It took me a while to realize that keycloak would handle the login for me so I didn’t need to implement that myself. Which would have saved me some time. One thing I think I did well was learning the vue framework and transferring my work to the vue framework. And kinda just the overall structure of vue and what i needed to do.

During this period i missed quite a few classes so i can’t speak as well as we did in our classes. One thing I can say is that at some point we kind of broke off into two groups. And each of our groups was tackling a different issue together. I’m thinking of the time that me and Andrew teamed up to find the port mapping while Cameron and Ben worked on another issue. This kind of goes into something I talked about before. But I think I could’ve done a better job of communicating to the team that I was stuck and or times where I couldn’t come in due to other issues. I also didn’t share my work very often with the team to get their input.

The pattern I tried to employ this time around was the Craft Over Art pattern. This pattern is about having the chance to build something impressive. While you have this great opportunity, its important not to get ahead of yourself. Remember to keep the function in mind and make sure the software can function properly before adding the flare. I think this was an important pattern for me to keep in mind because at many points I was full of ideas of what I could do. But by doing this I overwhelmed myself because I had no idea of how to complement. So at a certain point I decided on making sure that the launch page can first fulfill its function, before getting into the more aesthetic stuff. Especially near the end of the sprint I became more focused on getting the page and token stuff to work first. In the end I didn’t have as much as I wanted to improve the look of the page. But I did have something functional in the end which is better than something that looks nice but is broken.

From the blog CS@Worcester – Code Craft by Kyle Tucker and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective

Assigned Gitlab Issues

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/deployment/gitlab-profile/-/issues/23

Worked on starting development of the launch page for Thea’s Pantry.

Reflection

What I think worked well for me during the sprint was just research into what a launch page is and what its purpose is. Like I had heard of the name before, but wasn’t really sure how to apply to theas pantry. I think the hardest part of building was figuring out where to start and what I needed. In the beginning I was just building with an html file with help from bootstrap. I also wasn’t too familiar with building an app from the ground up. Like I had built simple web pages before, but they were bare bones and meant for learning purposes. I had built something like a page and brought it to class. I think after you gave some more direction I had a better idea of what to do. One thing I think could improve was just experimenting more. Like I kinda just stuck to my first design and moved from there. The design is simple which is fine. But I think I could have made it better. Or just experimenting with different ways to spice up the feel of the page.

One thing I think we did well as a team was just working together to troubleshoot issues. Of course at this point we all have our own separate work we could do. But we used the work classes as time to put all our heads together and tackle the same problem. I mean it didn’t always work, but I always thought we at least came away with something new or at least some direction. One thing I think we could do better is just updating each other more often on work or if we are stuck on something. Though it’s kinda hard to do so when none of us really know too much about what we’re working on.

I think the design pattern I tried to use during this sprint was Confront Your Ignorance. To summarize this pattern is saying instead of being afraid that you don’t know something that others seem to know. Just try to learn actively instead of being afraid that you don’t know it. I tried to employ this pattern because although I have messed with frontend before. It was not to this degree of involvement. And felt I was sort of the one in the dark. So instead of being afraid I tried my best to learn more about designing app. Tried to learn what everything means and some cool things that I could to improve the appeal of the app. Near the end of the sprint I realized that I needed to learn more about keycloak and how to incorporate that. I won’t lie, it was definitely overwhelming at first. But near the end I started to be better about taking the time to learn what I needed to learn.

From the blog CS@Worcester – Code Craft by Kyle Tucker and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

Gitlab Descriptions

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend/-/commit/96464eb852632dc728f438b7f4c0165831091a80 – Changed the modal pop-up to better match our visual identity guidelines.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend/-/commit/93a04bbdc54647d56d91fe797d7b3fea86c42236 – Changed the inventory table layout to accommodate for smaller screen sizes by adding a slider to view the entire length of the table.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend/-/commit/d81fe66a0adf27aff2dd29f7ba3713be9b9aa09d – Added buttons to navigate between the scanner and inventory pages to not make it necessary to go to the home page first.

Sprint Reflection

This was our last sprint, and I think that during this sprint a lot of my previous qualms were addressed and fixed. One thing I had said before was that I thought our communication was lacking in certain areas and that since we were working in pairs, the rest of the group was mostly in the dark about what we were working on, but I felt an increase in transparency this sprint. It felt like more of a team effort which I think was in big part because we were finally finishing up working for the semester so everything that we were working on individually was coming together. Working on the final presentation also helped with this as we felt everyone needed to be on the same page to be able to deliver a presentation that showed off our project well.

This leads to what I don’t think went as well, which was that it didn’t feel like as much progress was being made toward the project this sprint, at least in comparison to previous sprints. This was probably due to our presentation preparation, as well as a focus on cleaning up already implemented features rather than starting new ones. We knew since this was our last sprint that it was the time to wrap up what we were working on, which is probably why it felt like not much was getting done, but in reality I think what we actually did was just as important. 

I can’t think of any major improvements to make to the team to get it to function better, as we worked just as well as I think we could have. It was a pleasure working with this team and I think that these reflections in past sprints helped us come to a point where those points of improvement were answered and made us become an efficient team. As an individual though, I do think that I could have done more, which again circles back to the point of not feeling like too much was done. Looking back at what we’ve done though, I am happy with our progress, seeing as we started the semester with a blank slate and now we have a functioning scanner/database app. It’s just a personal feeling that more could have been done, but I think it’s true that there is always room for improvement. And I also think it’s good for me to have that mindset, but for this project specifically I’m not disappointed with my performance.

Apprenticeship Pattern

The apprenticeship pattern that stuck out to me for this sprint was the “walking the long road” pattern. It’s an important one that comes with mastering a discipline, the mindset that you are never really done learning, that there is always more knowledge to be had, always more challenges to overcome. This being our last sprint makes this pattern important, because we just spent months working on a project, emulating a real scrum team, but it doesn’t mean we are anywhere near mastery. Just because the semester is over and we completed this chapter doesn’t mean we are done, in fact I’d say we are at the very beginning of our journey still.

From the blog CS@Worcester – The Science of Computation by Adam Jacher and used with permission of the author. All other rights reserved by the author.

Last sprint but new beginnings

For my team’s sprint 3, there was not much more functionality we wanted to implement. On one hand we had the front end and back end working exactly how we wanted it to, for the full purpose of a demonstration. On the other hand, we knew that we would have to back track. The backend needed to be refactoring to fully represent an inventory backend instead of the guest info backend we had forced into working for us. This proved to be much more work than expected, more on that later. We also had a few different looks in regards to the actual display our front had. Slightly changing colors, logos, their sizes. All of the things you would expect when it comes to user interfaces and experience. While my own work focused mainly on the back end it was a good experience and very eye opening to work with the team members who were tweaking things and making different versions we were choosing from. It was fun to see what the tedious and seemingly bland work I was doing on the backend actually visualized and became something that felt actually usable.

For my own work on the backend, I was trying extremely hard to work with a teammate to go through Renaming and refactoring everything. At this point we had taken a backend that was being used to store guest information. Names, ID’s, and other identifying or important information. Them converted it to instead take the place of an inventory system that had not existed. This meant that the collections being used, the end points, the oaths, a lot of the comments, all of the documentation and all of the included tests. Would all need to be rewritten. What seemed easy on the surface quickly spiraled. Looking back it probably would of been better to dive into this issue before expanding on the whole project. By this time we had already connected the front end to it and a fetch script that worked as a middle man. After weeks of trying over and over to make this conversion. It became clear that it would have to become a project for whoever comes after us to work on. Although the opportunity is still available if I decide to take another shot at it, solo and on my own time. 

In order to at least make some progress I had moved forward with rewriting all the tests. I am extremely grateful for having learned Mocha and Chai testing from an old classmate a full year ago. He was also, is surprising serendipity, the person who had worked on the original tests for the guest info backend. Once I realized this I reached out to him just to check in and he was able to give me a couple resources and remind me of an assignment we had done together that proved to be a massive help.

This helping hand from a friend I had made really brought me back to the section finding mentors of the apprenticeship patterns. Having a network with friends who have understanding and experience in areas where you’re lacking can be such an amazing resource to utilize. Surrounding yourself with smart people, even if they’re not directly involved in what you’re working on can be a saving grace.

In the end, not as many features and additions were made in comparison to the first two sprints. Sprint 3 was a fun challenging experience that helped me reconnect with an old friend and rediscover how much I love testing software. 

With the original goals of all of the variable name changes, comment changing, documentation updates and rewritten tests. We were at least able to complete the documentation and testing. I even got the pipeline to finally pass with all of the tests and spelling checks.

I’m proud of what this team accomplished and the state of the project they were leaving behind for future teams to further develop. 

If I don’t get to it first >:) it is open source after all

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.