Category Archives: CS@Worcester Blog

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

Hi, my name is Abdullah Farouk and this will be my first blog of the semester and it is based on the readings from chapter 1 and the introductions of chapters two through six.

I did not know what apprenticeship actually means until after reading these chapters. From what I understand, It is basically learning from more “experienced” coders on how to be a better developer. Dave’s story was pretty cool and awesome to read as it gives me more motivation and I can see how good it is to get some help sometimes. From the three stages he provided for us in a developer’s career, I think most people are stuck between an apprentice and a journeyman with very few people in the masters category. An apprentice is someone who still has a lot to learn and wants to improve their way of doing things. I believe I am at this level right now because I still have some areas in my field that I need to upgrade or work on with my team or the professor. This gave me extra motivation because I want to be in the journeyman stage, at the very least by the end of this semester. Our professor would be in the “masters” category because he is very advanced in his area, performs the roles of a journeyman and is focused on moving the industry forward by teaching us and advancing the Worcester state pantry website. I do agree with these roles but I do think that there should be another category because there is a lot of difference between a journeyman and a master and that gap should be filled and made its own category. I like the idea of always wanting to improve and adapting based on the feedback people give you. The author talked about “a belief that it is better to share what we know than to create scarcity by hoarding it.” I found this quote very interesting and I 100% agree with him but I feel like this only is true in the computer world since people go off each other’s ideas and make changes to improve it. After reading the introduction for chapters two through six, I think I have found what my next blog is going to be about so it is giving me something to look toward and forward too. I will see you on the next blog, hopefully. 

Website: https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/ch01.html?_gl=1*2xjvhe*_ga*MjYwNDQ1ODc5LjE3MDY1NTY4MTg.*_ga_092EL089CH*MTcwNjU1NjgxNy4xLjAuMTcwNjU1NjgyMy41NC4wLjA.#introduction

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

Copyright and licenses in Software creation.

In today’s technology-driven world, software development has become a cornerstone of innovation. Whether you’re a professional software engineer or just a hobbyist coder, understanding the legal aspects of software creation is crucial. This blog post explores copyright and licenses in the realm of software development, shedding light on how they affect developers and users alike.

  1. Copyright in Software

Copyright law plays a pivotal role in protecting the intellectual property of software creators. When you write code, you automatically gain copyright protection over it. This means that no one else can copy, distribute, or modify your code without your permission.

Key points about copyright in software:

  • Copyright protection is automatic: As soon as you create code, it’s protected under copyright law, without any need for registration.
  • Exclusive rights: Copyright grants you exclusive rights to control how your software is used, reproduced, distributed, and modified.
  • Duration: Copyright protection typically lasts for the lifetime of the author plus 70 years, or for a set period in the case of works created by corporations.
  1. Open Source and Licensing

While copyright protects software by default, developers often choose to use open-source licenses to specify how others can use their code. Open-source software is critical to the tech industry, fostering collaboration and innovation by allowing others to use, modify, and distribute the code.

Key points about open-source licensing:

  • Types of licenses: There are various open-source licenses, including the MIT License, GNU General Public License (GPL), Apache License, and more. Each has its own terms and conditions.
  • Permissive vs. copyleft licenses: Some licenses are permissive, allowing for wide usage, while others, like the GPL, enforce certain restrictions to ensure derivative works remain open source.
  • Attribution: Many open-source licenses require users to give credit to the original author when they use the code.
  1. Proprietary Software Licenses

Not all software is open source. Proprietary software is protected by strict licenses that limit how it can be used, modified, and distributed. These licenses may restrict users from viewing or modifying the source code.

Key points about proprietary software licenses:

  • Closed source: Proprietary software is typically closed source, meaning the source code is not freely available for inspection or modification.
  • End-user agreements: Users must agree to terms and conditions specified in end-user license agreements (EULAs) before using the software.
  • Restrictive vs. permissive licenses: Proprietary software licenses can vary widely in terms of the restrictions they impose on users.
  1. Dual Licensing

Some software developers choose to offer their software under both open-source and proprietary licenses. This approach allows them to provide a free, open-source version while also offering a commercial version with additional features and support.

Key points about dual licensing:

  • Monetization: Dual licensing provides a way for developers to generate revenue from their open-source projects.
  • Flexibility: Users can choose the license that best suits their needs, depending on whether they want a free, open-source version or a commercial one with extra features.
  1. Compliance and Enforcement

Both open-source and proprietary software licenses come with rules and conditions that must be followed. Non-compliance can lead to legal action and damages.

Key points about compliance and enforcement:

  • Legal consequences: Violating a software license can result in lawsuits, injunctions, and monetary damages.
  • Compliance tools: There are tools and services available to help developers and organizations track and ensure license compliance.

Conclusion

Understanding copyright and licenses in software creation is essential for developers and users. Whether you’re contributing to open source, building proprietary software, or using software created by others, awareness of these legal aspects is vital for fostering collaboration and innovation while respecting intellectual property rights. Always be sure to read and adhere to the terms and conditions specified in software licenses to avoid legal complications and contribute positively to the software development ecosystem.

From the blog cs@worcester – A Journey through CS by mgl1990 and used with permission of the author. All other rights reserved by the author.

Learn How you Fail – week 13

This pattern focuses on being able to identify why and the ways you make mistakes to learn from them. The big message of the pattern is that you will naturally not be good at everything and sometimes you will have to spend a lot more time on something just to only be a little bit better at it which is ok, as long as you are making advancements to improving something you lack or feel needs work than do as much as you can.

In my experience I find it difficult to start new projects as I feel I am not yet qualified or experienced enough to finish or even make a large dent in the project. Not only is this a issue with the confidence I have in my work but moreover how I view how difficult the projects and issues tend to be, however eventually when I build up the courage to finally start I notice that I am much more capable than I thought I was. Even when I do end up making a mistake, I can see what I made a mistake on and work around it in order to be able to fix it and prevent it from happening in the future. The best way to go about it is like the pattern says, be conscious of the mistakes that I make and on what parts I make them on. A method the pattern speaks of is creating test classes for a method before you run the method at all so that you can look at all the mistakes at its raw form without testing. This will give you a good idea of what you fresh work looks like and where you seem to fumble. One method that I know still needs work on is my documentation especially on larger projects. Making more notes and comments of work I have done will allow me to keep better track and organize my thoughts.

While it sounds like being over critical about what kind of work you can accomplish being aware of what you can handle will allow you to better understand you limits so you can make a effort to move past them and be even better than you once were.

From the blog cs@worcester – Marels Blog by mbeqo and used with permission of the author. All other rights reserved by the author.

Sprint-3

This is my final blog for the university, where I work hard for four years, hoping to become a software developer. The team and I finished most of the tasks for the project “Reporting. System”; it was challenging for our learning experience. There are struggles and realizations from mistakes and trials of multiple attempts that help and benefit understanding for further the learning experiences. Those learning experiences from the tasks were interesting and challenging to complete becoming more difficult than others for unexpected.

I am currently making a presentation and adding details from looking back at the tasks that the group and myself for how much we accomplished. Also, looking forward to graduation. After the team and I adjusted to the issue board required for the work and practice. I have done these issues over the semester for weight assignments that have been changed with a total weight of 2-3 is reasonable and practicable. Some are easy to do and understand, but others are challenging.

The Issue:

  • Remove MongoID leftover – Backend (changes). There are still MongoIDs available, and I will investigate this further. After I asked for feedback or assisted in making certain adjustments, the result seemed to be an improvement, and the team concurred.
  • backend — Write a test suite for API (changes); This activity writes tests in Chai, ensuring that the backend works with the API while ensuring you get a file back in .xls format (get the simple tests working).

My still challenge concerning one of these tasks is researching the topic of “Chai.” the topic is still questioning the existence of a library written in JavaScript with different test frameworks. It provides that your code continues to work as intended by attaching to the assertions set up. Like npm install chai, chai-HTTP, chai-as-promise, etc. Those additions make the process simpler, but it doesn’t look good. It has already gone through the potentially functional aspects, even after the review, code addition/construction, and code comparison phases.

After I got the chai working correctly, I learned the backend server kept shutting down due to missing files, leading to some codes not passing. The team and I backed up the system by going back to find those files and running for testing; the first half is working (the version number), and the second half won’t. (missing data from the database). 

For improvement, I prepare to find information about this issue from my group members and others by asking others who have had this experience issue before. Even though the team and myself ran into more mixed technical problems during the development process, like missing files, which resulted in more delays that shifted the focus on the specific problem. Even that problem can help us better comprehend and learn new specialties to avoid misleading and repeated attempts. 

In conclusion, in the third and last university sprint, our team had a good time discussing and executing the tasks, though we tried to do some things to perform wildly well after the second-Sprint. We still faced some obstacles that became a fun learning experience for new topics.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective

Compared to the last sprint not only did I personally complete much more work, but the team accomplished a lot. As a matter of fact, we got over 17 in weight done in the first week compared to the much lower amount in the first sprint. I noticed that when it came to issues of us needing help or the sharing of information a lot more work was done together, and it allowed us to complete more of the epics and issues. For example, one of the issues me and kelvin both had similar solutions one was for the backend and the other was for the API, once Kelvin modified the commands/build.sh on the API I looked and see what changes he had made so that I could make similar changes to the Backend.

            Much of what was accomplished at the beginning was all of the issues that didn’t involve unit testing such as the verification of collection names in the API as well as Evaluating and Improving the API as a whole. The epics that were finished during the sprint were the API refactoring of file/directory/release structure and infrastructure as well as the conversion of all docker images we are building to multi-architecture images. As I state previously, we completed more epics in this sprint than that of the previous one.

            As for improvements that could be made I think the biggest improvement we can make is to keep focus especially towards the end of the sprint, I’ve noticed once we get into the final week of the spring right before the sprint review the progress tends to slow down and focus lessens a fair amount this mainly do to shifting attention to the review, reflection, and the planning of the next sprint. While all of those steps are very important to the process maintaining the flow that we have the first 2 weeks into the last one will allow us to possibly complete even more and get farther into the project. As for personal improvements I can make I think practicing and taking on even more of a workload would be to my benefit as it will allow me to cover more ground and become more accustomed to the system. The biggest issue I had in the previous sprint was that I spent a lot of time resolving issues that had come up while fixing other issues, as well as trying to delve into the Frontend of the system. I maintained the right of amount of weight completion each week which was a significant improvement over last sprints and I plan to keep that going into the next sprint.

            The best thing to come out of this sprint was that most of the last sprint will be finishing up unit testing and focusing on making sure the system works correctly so that next semesters students don’t have issues with the system and can work on it efficiently Much like how we found it. The most important thing now is to keep the system running and keep Epics organized and unopen so that the next semester can work off those.

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

Designed Unit test for replaceGuest Endpoint.

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

Implementation of the unit Test designed for the replaceGuest Endpoint.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/guestinfosystem/guestinfoapi/-/issues/102

Verification of collection names in the API to make sure they make sense and are correct.

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

modified commands/build.sh in backend to use context to specify what image to build.

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

added Pipeline variable with multiplatform string to backend.

From the blog cs@worcester – Marels Blog by mbeqo and used with permission of the author. All other rights reserved by the author.

Sprint-2

Hello, welcome to the Second-Sprint Retrospective Blog. I contributed to the group project by working on the tasks assigned on GitLab. I chose to complete one of the jobs, but it was more difficult than I had expected. I am currently participating in an activity that calls for additional alterations, and adding more details is more complicated than I had anticipated. It is up to the team and me to decide whether to put the modifications for the necessary measures. 

After the team and I adjusted to the issue board required for the work and practice. Completing this ISSUE Weight assignment with a total weight of 3 is reasonable and practicable. 

The Issue:
backend — write a test suite for API (changes); This activity writes test in Chai, ensuring that the backend works with the API while ensuring you get a file back in .xls format (get the simple tests working). 

My challenge concerning these works is researching the topic of “Chai.” It explains that Chai is an assertion library written in JavaScript with different test frameworks. It allows maintenance of your code’s functionality and checks that it follows those assertions. It has the “assertions” style comparable to Node.js’s built-in assert module, and the “expect” style uses a chainable API to create more legible and expressive tests. Chai can be used with any testing framework, including Mocha, to define test suites with a specific feature. Each test in a test suite will state how your code should act.
I learned that it has additional chai-related dependencies after researching the topic. These include additions to npm install chai, chai-HTTP, chai-as-promise, etc. Those additions make the process simpler, but it doesn’t look good. It has already gone through the potentially functional aspects, even after the review, code addition/construction, and code comparison phases. However, the conjunction of some codes didn’t pass due to some missing information and led to some failures. 

To improve myself, I plan to seek information regarding this kind of assignment from members of my group and members of other groups by asking questions. It will serve as a learning experience. Even though the end of the year is getting close, I have seen that my abilities to manage time have increased, and the learning steps for work are becoming the assigned time. We ran into various technical issues during the development process, which resulted in delays; the team and I had a fantastic mid-round in finishing all of the items listed on the sprint backlog. These delays are different learning experiences that require better comprehension and learning new specialties to avoid those misconceptions and repeated attempts resulting from communication breakdowns. The problems may avoid by increasing knowledge and diving into the serious issue with the other group collaborating. 

In conclusion, in the second sprint, our team had good objectives and executed them, though we succeeded wildly better after the First-Sprint. We overcame some obstacles and learned about new topics while working through the complex pipeline and completing one of the assignments.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-7

Hello, final week (seventh). It is spring break week is almost over, even with the book. I got a comment about needing clarification on the chapter 2 blog; I needed to have understood the number of pattern selections as I chose more than one pattern. So I went back to week-1 (chapter 2) for a quick review; I chose one of the topics. It is “The Deep End.”

This pattern connected with me by feeling stuck and needing to challenge myself with more significant projects to grow my skills, confidence, and even a portfolio. By jumping in at the deep end to take on challenging jobs and doing things that push over the limits. It highlights that taking risks is an opportunity seen through anxiety and responsibility to counteract the threats by finding mentors and creating feedback loops. Yet, I agree with aspects of that technique. It shows taking the list of your projects to measure project complexity and other proportions while using this idea to see where your career is heading and make choices based on it.

Have you noticed that the practice has changed how you consider the type of work you want to undertake or your desired career path?

This practice allowed me to jump at the deep end and take on challenging projects for future careers in tech companies. I have developed various skills highly valued in the tech industry of experience in different areas like project management, problem-solving, and cross-functional collaboration. This can help me become more flexible and better equipped to handle different roles and responsibilities in the future. I am then building a solid portfolio that showcases my skills and experience to possible companies. It tracks projects and provides results to help people stand out and increase their chances of getting hired or promoted. Lastly, taking on challenging projects and pushing to become more confident and stable for tech companies operating and looking for individuals who are fast-paced and rapidly changing environments can settle on challenges and work under pressure. Also, I can become better prepared to guide the injunctions of the tech industry and succeed in my career.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-6

Hello, and welcome to week six. I’m on spring break this week, so I will experience some activities like going to a resort or doing wild things for fun outside my comfort zone. However, I still need to complete the complex and lengthy tasks of studying and returning to school for some exams and schoolwork related. After finishing the fifth chapter, I’ll continue with the book’s sixth chapter. I read and picked what stuck with me was the reading selection “Dig Deeper.”

This pattern connected with me since it applies to everyone who has engaged themselves in a subject that might be thought-stimulating. Workers may want assistance with code maintenance and clarification of skill levels due to the issue of developers needing a basic understanding of the tools and methodologies. It can stand the resources and knowledge support while putting them above the creative process. One can prepare to support the time and effort necessary to read primary sources, comprehend ideas’ historical and cultural context, and practice what they have learned.

However, I can only partially agree with aspects of that technique; it provides a comprehensive understanding of software development features, which is essential when analyzing current open-source implementations. Together with a blog post, it has some gaps in the papers and articles.

Have you noticed that the practice has altered how you think about the work you want to do in the future or the overall career path you want to take?

Learning how to tackle and troubleshoot complicated problems, this activity can help me become a better problem-solver. Also, they can better pinpoint areas where deep thinking might enhance performance through code optimization. The practice can boost my self-confidence and capacity to produce value early with solid expertise in a particular field to take on new challenges and offer quick answers, such as finding pieces and enhancing the project. It can combine improved teamwork and communication by explaining challenging concepts and ideas to other team members and stockholders. Even more job opportunities to stand out, looking for developers with deep knowledge and the ability to provide expertise in specific industries.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

Sprint-1

Hi, and welcome to the Sprint Retrospective Blog. I have completed these tasks on GitLab for the group project; the team and I have been assigned to decide whether to implement these changes when necessary. For myself, I have done there is one activity that does require modifications, while the other three do not. These ISSUES weight totals are reasonable and easy to do once getting to the mindset of the work and practice.

 The Issues:

My challenge concerning these works is that I took the time to review the codes, and everything seems to be great, so it does not require any modification. Even if it means setting aside some time so that you can go to the next activity or task in the sequence. On the other side, it makes it appear that all I have done is read the codes and determine that there is no need to update them, making me feel bad because I haven’t worked as hard as I should have been working on this project. To improve myself as an individual to have goals that include conquering negative emotions, recognizing that the quality of the job has been maintained, and making additional recommendations to the team regarding acceptable actions. In the upcoming year, is to improve my time management abilities and all of these measurements so that I can finish all of my work within the assigned time window. I need to improve my technical skills and knowledge to contribute to the team significantly.
 

The team and I had a rough start in completing all the tasks on the sprint backlog; we encountered some challenges along the way. We faced several technological challenges during the development process, leading to delays. Additionally, some communication breakdowns led to misunderstandings and duplication of efforts. To improve on those issues by strengthening our technical skills and knowledge. This work can be achieved through regular training and knowledge-sharing sessions. We also need to establish better communication channels to ensure that everyone is on the same page and that there are no misunderstandings. Additionally, we need better tracking and monitoring mechanisms to ensure we are on track with our goals.

In conclusion, our team had a rough start, but we got through a lot of success during the first sprint. We overcame some of the obstacles while working through the sprint backlog and completing some of the assignments.
 

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

Sprint Retrospective- Sprint 1

In this Sprint the Biggest take away I had was coming to the realization that every aspect of working in the class either it be doing the research required or diving directly into the code itself it must be recorded and accounted for was time spent working. Being able to properly weigh the tasks that we had to do on the first time around was tricky as we always seemed to spend much more time on issues that we thought would take only a couple of minutes, but the beautify of it was that we could always go back and adjust the weight of the issues afterwards.

            The thing that worked the best for us was being able to delegate issues to ourselves and others who had the capacity to solve those issues relatively quickly and with little to no support required from others that would take away from the time that they would spend on their own work. The other big aspect that worked for us was being able to come together and support one another when we had issues in our separate tasks. I can think of many times where kelvin offered his support when I was having Problems with my committing in the backend issue I was working on during the sprint, and I can say that others in the group stumbled at moments when someone else came and gave input that allowed for the issue to be solved.

            The biggest change we would need to make as a team would be to definitely work on creating more issues when we are planning our Sprint, when we started this one we were under our target weight at around 28, in order to make sure we hit out goal weight we need to make issues no matter how simple we think the solution to issues may be. When we looked over all the issues, we had on our boards we realized that some of the issues we created could be broken up into more issues and some could even be weighted more.

            The change I would make as an individual is to focus more on the smaller issues as well as doing research on the bigger overarching issues that require more attention. Front end was the longest I had spent on issues during the sprint was looking over the front end as it was the one aspect the GuestInfoSystem that I had not touched, even in the previous class. I spent most of one week just doing as much research into VUE as well as how to navigate the front end and it was still difficult to wrap my head around what needed to be done for the issue. While this research was important and necessary I could have also spent time completing issues on other aspects of the System of which I had more experience on, however I was interested in seeing if I would be up to the task of taking on the FrontEnd.

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

This issue was solved removing any of the Get/guest parameters from the GuestInfoAPI, which was found primarily in the listGuests.yaml

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

This issue was solved by removing many parts of the guest.js file as well as using the updated API from the other repository and importing it into this backend.

From the blog cs@worcester – Marels Blog by mbeqo and used with permission of the author. All other rights reserved by the author.