Author Archives: Dahwal Charles

Sprint 1 Retrospective

The first sprint for Software development capstone class was believed to a successful event. Our objective was based upon the epics given to us and broken down to smaller issues to tackle the epics. Our team’s goal is to create new repositories for the backend and API. The nature of this sprint was to make sure the backend and API were setup with their schemas, endpoints, and dev containers to be running toward our next sprint we going to formulate.  Throughout the sprint we did a successful job at setting up the infrastructure and revisiting the previous semester assignment from Software architecture was a major help to us to progress at a steady rate.

There were some issues that our team that we came across our sprint that we struggled and affected our productivity and time management. First, whenever we conduct our standup meetings, we tend to get sidetracked and off topic, one person over speaks another person and bot waited till the end of the meeting thus making us waste our meetings and lose track of time. Second, as we learn more on GitLab and its functions we had many problems with repositories and understanding the merge requests as well as its purpose. The team was stuck upon making the appropriate comments to make a record of what we have discussed during the standup meetings or in general if needed for the next team to look through. Third, making unnecessary repositories, this is what we really struggled with because once we were working the API and we made a repository to accommodate each issue we had, sometimes we accidently work on each other repositories and created a workflow mess and had to revert the commit we made to detangle the situations that occurred.

To be sure we don’t have these issues reoccur, we had made an understand on the major conflicts we have faced to be squashed towards our future sprints. We agreed that for our standup meetings is to be respectful and allow the person to finish speaking their side and wait for all questions till we are finished. To make our own repositories in general to reduce confusion when we are working on our own issues and committing them to the correct repositories. Applying up to date comments in the issues we create and after our discussions to keep a record. 

Other than my team’s performance, there are improvements I want to make towards myself. When I was making one of the schemas for the API repositories, I had trouble on making one myself and had to ask a teammate and do research on a detailed explanation of it and to compose one. An issue like this one could’ve been done in a class period, but it took me two because of it. Backend is a weak point for me and to squash this fear is to resort to the previous classwork and material. As well as do massive amounts of online research to completely understand how to about be implementing the backend which is required for the next two sprints. Another improvement I can make is that for the issues I create are too broad and vague to understand, had some of them revised to be more meaningful. 

Sprint 1 Issues


From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

Upon reading the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye for my CS-448 Software capstone class. It showed much interest on trying to understand on what it takes to being a software and to what lies ahead on that path. Teaches developers and students that are seeking answers to their questions or possible need more guidance, this book helps clarifies us. For example, in chapter 3 it speaks of determining a goal in the long run, basically draw a map out of your goals and dream on becoming a software craftsman, think ahead and plan. Visualize where you could stand in 10-20 years from now. This part has piqued my interest because once I put more thought into it, I want to accomplish so much in my life and career as a software developer, there are endless paths and opportunities I could walk towards but only one step at a time. In chapter 6, where it teaches us to make our curriculum, I agree but also disagree with some parts on this because even though we are no longer in school and we are to read books, do research on our own since the world of the internet is ever so expanding every day. People always have their own way of learning on expanding through methods. Reading is not for everybody. That is why there is more ways people can learn. Through YouTube, articles, tutorials, or even another developer. Sometimes people don’t even want to expand or just want to stay with the experience they’ve obtained, that’s their choice. Makes me think if going further in more than one subject is necessary depending on the job you got and its need and requirements. But then again to become more experienced in your professional history we must be determined to visualize further on in life. For example, if we study on an area an hour a day for the next five years than we become experts on that subject. I believe this will give more insight once I go more into the chapter I wish to read about and deeply understand the purpose of its contents and carry on with its teaching to be a software craftsman.

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Thea’s Pantry

For the cs-448 course we are working on a project which regards to the Worcester states food pantry program called Thea’s Pantry we are working on a project to improve its community. After looking upon the user stories, and I found useful information. This is fascinating on how the documentation gives a breakdown in each category such as the guest visiting inventory, access management, new inventory, etc . Tells how in each bullets on how it is supposed to be configured and implemented throughout the project. helps give an understanding what is needed to be accomplished and/or has been already accomplished.

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Libre Food Pantry

For my capstone project in CS-448, we are working on the libre food pantry which I have taken a look into the mission, values, code of conduct, etc. I have read about the FOSSisms which provided good information about the opened sourced culture into sixteen parts. Such as, respecting the community and to get in-depth with the community purpose and guideline and whatever to dig up into the project you are interested in. The steps give me more insight on how to go about the open source world. And how to go about it. In step 3, to give community back intrigued me because when we are in a field working on a project we make as much positive contribution as possible to gather answers from others or give answers to others, where it is a positive two communication to continually improve your community.

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Design Smells

Before constructing a project, we must picture out an image out or possibly draw it out to get a better grasp. This way tends to make a smother software as writing our code. But overtime we must face challenges along the way, which regards to maintaining software and keeping it maintained and readable. I have found this website which is called https://flylib.com/books/en/4.444.1.47/1/. This website is a library is all types of information regarding a library of books in different areas such as SQL, programming languages, interfaces, etc. I believe this website can aid me and any other developer to get a wider insight on the information they desire to seek. 

Design smells are basically violations regarding poor designing and that can be spread among other parts of one’s code and/or project. Which is why we have types of code smells to determine on how to seek and resolve it before it becomes an issue. The design smells are divided into seven principals.

Rigidity design is where you make a small change in your code could make huge, unexpected changes in other areas of the software. Fragility design is almost like rigidity, but this is where is when you alter a change in your code and broken code starts to erupt in. this is a sneaky design smell because we do not realize it sometimes and it can potentially make it through the production phase. Immobility design is common due to the fact of parts that are deemed useful are also harder to separate as it can pose a risk. Viscosity designs are also common when deciding between a not good choice that is convenient other than a good one that is not convenient. Needless design comes in two forms which are needless complexity and needless repetition. Needless complexity is straight forward of making your code overly complicated than it needs to be that consists of redundancy. Needless repetition is composed of unnecessary repetition. For example, when we make copies of classes to do the same thing and adding more classes on top which result in a developer’s laziness. Lastly, we have opacity design where readability becomes harder to read and takes time to understand the code which waste time on a developer. 

After gathering information on design smells and seen examples of each type of design smell in my CS-343 class. I understand that it is crucial to refactor code where it can stay readable and keeping it maintained. When starting a project, we always want to make a visual image to make it easier to implement. Also applying the rules and avoiding design smell as much as we can but sometimes, we can miss them and are able to determine the type of smell and find a solution. 

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Rest API

Rest API are a common method for integrating applications in their services to provide more reliability and to be flexible where possible. I chose to use stackoverflow.blog as my blog because they are filled with information in regards to many programming languages, AI, databases, especially Rest Api and etc. The blogs also discuss and provide certain authors that give explained details on the processes and focus on implementing, as well as common problems that may erupt with certain solutions that can lead an aid to a professional career in software development world. As this website have given me a clearer perspective while in my Software Construction architecture class along the way working on our Food pantry project.

As for Rest Api, they are a common web service used in today’s technology. Allowing the client (person making the request) to communicate with the servers (receiving the client requests) with is the Rest Api that is connected to a database. To keep in mind, when creating an API, we use always separate the client from the server to made to interact on one way because due to fact that clients can make requests but not responses, while server can make response but not requests. We use HTTP methods as an action for the client wants to make. GET Method allows the clients to request the information from the backend. POST Method is creating or listing the information. PUT Method is editing the information. DELETE Method allows the deletion of information.

JSON (JavaScript Object Notation) is a basic format to help the programmer to easily read write out code for the computer to understand and generate the output and cache the responses. API endpoints are the end of the communication, which utilizes the services or the response. For example, when making a request on the API rom the browser or an application, the response will then be received that reaching that point will be the endpoint. 

After learning about REST API in my CS-343 class and working along the course. I start to begin to gain more confidence and gain more insight on how the process works. And designing the API which gave me complications for the backend and frontend as well. Realizing even the slightest misspelled command or wrong path can leave you clueless on fixing the problem but understood why the situation erupted. This material could’ve been useful for my database course I have taken previously to implement the databases on the server to be integrated along with providing the appropriate security from the client side with restrictions, while the backend is able to store, modify if allowed. 

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

UML Diagram Designing

When it comes to programming and building a program, we need to first sometimes implement a diagram to give others an overview of the said program. I chose this blog because it contains many types of articles based upon various types of diagrams which also include detailed information about UML diagrams. I chose to pick this topic because as a software developer, when working on project on teams it helps specify different parts of the diagram to divide up the work and make the connections to make sure it builds appropriately to determine the structure.

Why Use UML?

UML stands for “Unified Modified Language”, which can be the blueprint in the world of architecture designed to make software architecture more visual to help other software developer understand how everything is implemented. There are two types of Diagrams, Structural UML diagrams, and Behavioral UML diagrams. Useful for every type of occasion such as databases. In the example below, we have a simple diagram, each main category are the classes. Each class contains. attributes and methods that are assigned to their own classes such as public, private, protected, etc. also displays the data type associated with the methods. Relationships are the connections between objects made with other classes, we have different type such associations, inheritance, aggregation, implementation, etc. Animal listed as the super class and the specific animals are the subclasses, the arrows are the inheritance relationship from the super class. 

UML Class Diagrams Tutorial, Step by Step | by Salma | Medium

After what I have learned about UML diagram designing, I have a small amount of experience prior thanks to taking the database course. But the further we progress in the course I can have a clear perspective on how go about it and how to make one when it is needed to make programming and others much is simpler. UML could have been useful during my intro to programming class because when we draw something on a piece of paper to fully see the classes, methods, objects, data types, etc. we could make programming and the connection made. This benefit will help all developed communicate effective but examining the appropriate connections, even though if may have some conflicts when it comes to the code writing phase and readjust the diagram accordingly. I have provided links before to further give more insights about how to go about using and making UML diagram and the purpose on why it is a crucial part of the software development process.

Links:

http://blog.genmymodel.com/what-you-need-to-know-about-uml-diagrams-structure-diagrams-1.html

https://www.genmymodel.com

https://www.geeksforgeeks.org/unified-modeling-language-uml-introduction/

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Blog Discovery

Why do we use Docker?

I decided to choose this article because it goes in-depth on the way we use docker in real life and how efficient it can be when it comes to “virtualization” in a sense, which allows it to run smoother. Plus, BMC blogs are filled with potential reads about software development, implementation, methods, etc. filled with blogs about other project they have accomplished to supply on  how we are already learning the basics on docker and command lines, this information on how docker works will be used in my class for future projects will give not just give me insights but other students that have a need to gather an understanding on how to operate docker and its components and valuable resources.

What is Docker exactly?

Docker is an open-sourced platform that is Linux based towards virtualization but using containers to build, run, test and packages applications with pure efficiency without losing its integrity because it doesn’t rely on the computer’s hardware but on the OS (Docker Engine). Docker is broken down into different elements that helps it run a bit smoother than virtualization, which are containers, images, registries, docker file, and Docker engine. Docker image are set instructions that make up the containers and processes on how to run the application. To run the images, we have the docker engine that helps maintain the virtualization said container on the host machine. If docker is installed it can be applied the same when it comes to container since they run the same. For example, when we want to build a website and add in a web server along with a database such as MySQL, we can simply make an image for the MySQL and give it instruction to the specific port you wish. then package the web server in a container to run the images you already preconfigured and its dependencies, so if you need more servers to be added, easily deployable and easy to migrate said containers to new server. 

I have no prior experience with docker but have a great understanding on how it can be useful in software development and how it can used efficiently especially when compared to cost and using VMs. I could have used this practice in combine with my database class of when I built a MySQL sever and could’ve practice my database with a docker container and saw first handedly how to implement and observe the inner workings of composing it into a container to save the hassle if I wanted to build a web server or application entirely on the docker services. 

Blog resource link: https://www.bmc.com/blogs/docker-101-introduction/

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Blog Discovery

Michael Feathers is a software developer, founder, and director of R7K Research & Conveyance. R7K Research & Conveyance is a company located in Miami Florida. Specializing in software design, they use the importance of the need of the business and intensive planning to meet company demands, plus on top of that to be able to design software where you are aware of the code to make adaptable adjustments in the long run such as, adding new features that are newly needed vs features that are easily removed to make room for new upcoming changes which is referred to as planning. 

He helps other teams and developers to refactor code to improve its performance without rewriting the existing code. Gives best practices to maintain their software with ease such as making test programs as you can optimize it at the same time to keep tabs on it. 

I chose this blog because he provides helpful tips whether they are in Java, Python, C++, etc. and leaks information from his Book “Legacy Code”. Also mentions UML which I could learn more in depth of when we progress further into CS-343. 

In one of his blogs about code refactoring, he discusses that before we make tests for our own code we write, we must evaluate and rethink towards ourselves whether if it is going to fail. He stated, “As you make any change, know with every edit whether that edit changes behavior.” https://michaelfeathers.silvrback.com/testing-yourself, meaning we can’t compile code if it is incomplete, if there is something going wrong, we must figure out the missing piece of the puzzle. I could’ve used this type of thinking back in my other core classes like Data structures, or intro to programming class, because it can only take a small mistake to make your entire code and/or program to fail. Another reason is that Michael gives an example about when working in groups, and the type of challenges you may face such as having trouble putting heads together, not seeing each other’s perspectives. Providing tips and trick to get around obstacles like these. In CS-343, we do POGIL activities when we come into class, each member has roles of their own to keep the teamwork intact, but as he exemplified before we may also “glitch” and we have to figure out why and what can do about it. Depending on how we think and how we get ideas.

Reference blog resource: https://michaelfeathers.silvrback.com , https://www.r7krecon.com

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.

Introduction

Hello, my name is Dahwal Charles, and I an college student at Worcester State University. I am majoring in software development and here to make my professional portfolio for all my jobs and projects throughout my future career.

From the blog cs@worcester – Dahwal Dev by Dahwal Charles and used with permission of the author. All other rights reserved by the author.