Category Archives: Week 11

Taking REST API to the DEEP END.

Rest API and CS-343 are a duo that just sounds right. When trying to give to come up with a blog idea for such a class, I couldn’t picture a clearer GIF than our dear friend Patrick Star

I try my best to not compare but it is hard not to when I compare my blog process to CS-348 and made the sudden realization I have over a hundred ideas for that class.

However, in the short two-minute comparison, I realized that since my class was approaching MS-Billion-Gillion-Trillion in Micrroservice Activity, it would be a great time to take a deep dive into Rest API.

A lot of the articles I had a chance to come across I noticed to have lots of gaps in the information provided. Noticed in some there was missing clarification, simplified introductions, and Chat-GPT “Whats Rest API” money makers. REST API and API in a Nutshell. Deep Diving Into REST API by Krunal Chauhan offered the best of both worlds in offering me a crash course on Rest API and a challenging question started on the advanced side of such a topic.

Crash Course KNOWS:

  1. Definition of API:
    • API stands for Application Programming Interface.
    • It acts as a software intermediary allowing communication between different applications or devices.
  2. Need for API:
    • Necessary for communication with various devices and services.
    • Enables interaction with web browsers, mobile devices, and third-party software.
  3. API Explanation (Metaphor):
    • Describes API as a mediator, like a waiter in a restaurant, facilitating communication between the client (user) and the backend (kitchen).
  4. How API Works:
    • APIs communicate through rules/protocols.
    • Typically works over the internet via HTTP, built on top of the TCP/IP protocol.
    • Analogizes API communication to a customer (user) placing an order through a waiter (API) to the kitchen (backend).
  5. REST API:
    • Represents a style of API architecture that uses HTTP and is user-friendly.
    • Introduced by Roy Fielding and is considered a standard protocol for web APIs.
    • Works with HTTP methods like GET, PUT, POST, and DELETE.

CRASH CROUSE DEEP DIVE:

  1. Building Blocks of API:
    • API Interface Block: Defines specifications for the API, often using HTTP.
    • API Controller Block: Manages traffic, and handles authentication, and authorization.
    • API Runtime Block: Executes the business logic of the API.
    • API Data Bridge Block: Facilitates seamless access to shared data storage.
  2. API Management:
    • Involves designing, publishing, documenting, and analyzing APIs in a secure environment.
    • Components include API design, API gateway, API store/developer portal, and API analytics/dashboard.
  3. Types of API:
    • Open APIs (Public API): No restrictions on access.
    • Partner APIs: Requires specific rights or licenses.
    • Internal APIs (Private APIs): Used within a company for internal purposes.
  4. REST API Architecture Components:
    • REST Client: Code or app accessing REST services.
    • REST Server: Offers API and resources.
    • REST API: Defines endpoints and methods.
    • Endpoint/URI: Specifies where to find a resource.
    • REST Request: Includes HTTP method, endpoint, headers, and body.
    • REST Response: The server sends a representation of the resource, often in XML or JSON.

I enjoyed reading these types of articles when the reading flow is smooth and coherent to the subject. If you can believe it or even if you check the article yourself, the summary above is my notes for the article and about how 99% of the article flowed.

A good chunk of the reading was a good reminder of things I already learned but there was also a few sections that required me to go back as we have not had the chance to talk in-depth about them.

Specifically, the Rest API Management as this was the first time I ever heard these terms before and was not a section we were able to cover just yet. Out of the article I was able to break down the Rest API Management into 4 sections.

  1. API Design:
    • This block enables users, including developers and partners, to design, publish, and deploy APIs. It includes recording documentation, security policies, descriptions, usage limits, runtime capabilities, and other relevant information.
  2. API Gateway:
    • The API Gateway acts as a gatekeeper for all APIs. It handles tasks such as routing requests, composition, and protocol translation. It enforces relevant API security policies, ensures authorization, and guarantees the security of requests.
  3. API Store / Developer Portal:
    • This component provides a place to keep APIs in a store or catalog, exposing them to internal and/or external stakeholders. The API store serves as a marketplace where users can subscribe to APIs, obtain support from the community, and access other relevant information.
  4. API Analytics/Dashboard:
    • API management solutions offer analytics and dashboards that allow users to monitor API usage, load, transaction logs, historical data, and other metrics. This information helps in understanding the status and success of the available APIs, facilitating data-driven decision-making.

Now I’m not sure why I found this part so interesting and why I found myself watching a 30-minute YouTube video on how API dashboards work and operate, but hey whos going to judge? This is a section I believe we are going to cover/hope we do as it’s been a great experience learning how to build and read complicated APIs. I feel like I am ready to take another step and properly learn how I would manage one of these APIs that I created.

PS: “Advantages of API vs ******** ” (Stay Tuned)

Until Next Time ?

Source: https://medium.com/@krunalchauhan_/article-worth-reading-on-what-is-an-api-what-is-a-rest-api-and-deep-diving-into-rest-api-fea074dacaed

From the blog CS@Worcester – CS: Start to Finish by mrjfatal and used with permission of the author. All other rights reserved by the author.

Navigating the Labyrinth of Anti-Patterns in Software Development

As a student navigating the intricate world of software development, stumbling upon Andreas Schöngruber’s insightful article on anti-patterns was like discovering a treasure map through the labyrinth of coding pitfalls. Titled “What Is an Anti-pattern?”, the article serves as a comprehensive guide to understanding, identifying, and avoiding anti-patterns in the software development lifecycle.
Schöngruber’s article begins by defining anti-patterns as deceptive solutions that appear effective but ultimately create more problems than they solve. These pitfalls manifest in various aspects of software development, from programming practices to methodological and testing phases. The article covers programming anti-patterns like Spaghetti Code, Lava Flow, Accidental Complexity, God Object, Hard Code, and Magic Numbers. It further explores methodological anti-patterns such as Premature Optimization, Reinventing the Wheel, and Copy and Paste Programming. The discussion extends to software testing anti-patterns like the Wrong Kind of Test, Testing Internal Implementation, and the Happy Path.

Why I Chose This Resource:

In the ever-evolving landscape of software development, understanding what to avoid is as crucial as knowing best practices. The article’s clarity in categorizing and explaining various anti-patterns appealed to me as a student eager to enhance my coding skills. It provides a roadmap to steer clear of common pitfalls and promotes a proactive approach to creating efficient and maintainable code.

Reflection on the Content:

As I delved into the programming anti-patterns, the concept of Spaghetti Code resonated with me. Schöngruber’s emphasis on modularity and readability struck a chord, prompting me to reflect on past coding practices. The discussion on Hard Code also resonated, making me rethink my approach to configuration management. The article prompted a realization that simplicity, adhering to the “Keep it simple, stupid” (KISS) principle, is not just a preference but a necessity.

Moving into methodological anti-patterns, the notion of Reinventing the Wheel made me reconsider some instances where I may have overlooked existing solutions. The discussion on Premature Optimization underscored the importance of balancing performance improvements with actual needs, a valuable insight for optimizing code efficiently.

Application in Future Practice:

Armed with the knowledge gained from this article, I envision a more discerning and proactive approach to my future coding endeavors. Recognizing anti-patterns will not only enhance the quality of my code but also contribute to a more efficient development process. I plan to integrate the principles discussed, such as modularity, simplicity, and avoiding unnecessary optimizations, into my coding practices. Additionally, the insights on testing anti-patterns will guide me towards more effective quality assurance strategies.

For those eager to navigate the labyrinth of software development with fewer missteps, I highly recommend reading Schöngruber’s article. It’s a valuable addition to any student’s toolkit, providing insights that transcend textbooks and delve into the practical nuances of writing robust and maintainable code. You can access the article with the link below.

https://www.baeldung.com/cs/anti-patterns#:~:text=Anti%2Dpatterns%20are%20the%20opposite,project%20management%2C%20and%20organizational%20behavior.

From the blog CS-343 – Hieu Tran Blog by Trung Hiếu and used with permission of the author. All other rights reserved by the author.

Week 11 Blog

This week’s topic I decided to choose a blog post about the writing of clean code to correlate with what we’ve been learning in class. The blog post, published by Jacob On Software, details how the writer has been reading Clean Code by Robert Martin. This handbook identifies the significance of writing clean code, as well as, how to properly write readable and professional code. Jacob On Software takes a unique and effective approach to teach readers; refactoring one of his old projects. Jacob states in his blog post that during this project, he was forced to learn how to create a full stack web application in just three weeks, resulting in him rushing and writing not so clean code. The blog post highlights that other contributors working on his project will have strenuous time trying to decipher his messy code, hindering the development process and evolution of the software.

Looking at an image of the his code, we can see that the name of his functions are descriptive of what they accomplish, however the functions themselves have too many lines of code, which is a crucial aspect detailed in the Clean Code book. Having functions that are thousands of lines long makes it a nightmare to understand what the function is doing. Clean Code emphasizes that functions should be small and straight to the point. Jacob fixes his code by splitting up the function into smaller functions. Additionally, Martin’s Clean Code stresses that a function should do one thing. Previously, Jacob’s function was performing multiple operations like holding data and updating it. These operations were split up into their own functions, allowing others to instantly understand the purpose of these functions.

Further into the blog, Jacob talks about the formatting of his code. The more lines a file has, the harder it is to understand. Users only have a limited amount code that will fit on their screen at once. If the developer has to constantly scroll up and down through hundreds of lines just to understand your code, you are not writing clean code. The same can be said horizontally, lines in your code should not be extending off to the right of the screen.

I chose this topic because after looking at the examples of bad code and good code in class, I admit that most of my code that I’ve written in other classes would be considered bad code. Non-descriptive variable/function names and multiple operations in functions have definitely been a weakness in my code. It’s crucial to write clean code as software developer working in a team so other team members can easily understand your code. I plan to use this information as a guideline on how to write more descriptive and readable code in the future.

Blog Post: https://medium.com/codex/reading-clean-code-week-2-643641e4dc28

From the blog CS@Worcester – Computer Science Through a Junior by Winston Luu and used with permission of the author. All other rights reserved by the author.

Proper Communication Within Daily Scrums

During our classes we discussed the definition, theory, values, team makeup, events, and artifacts of Scrum. I decided to focus on one of the events of Scrum within the Sprint called the Daily Scrum. The Daily Scrum was briefly described and we discussed how the Daily Scrum allows the team to inspect progress toward the Sprint Goal and to adapt the workload as necessary. What we didn’t do was discuss the best way to go about that. I wanted to understand the best practices for proper communication with team members in accordance with Scrum values. The blog “Ten Tips for More Effective Daily Scrums” by Mike Cohn helped with this by giving 10 helpful tips for how to conduct a Daily Scrum. Cohn specializes in agile processes and techniques and makes a living by helping companies build high performance teams.

After reading the tips, I could see that most of the points were prioritizing focus, one of the main values of Scrum. Most of the tips give solutions or show problems that arise that stop the Daily Scrum from focusing on the Sprint Goal. The problems it shows are what I assume to be problems that happen repeatedly for people new to Daily Scrums. They don’t talk about the current Sprint, talk about work done unrelated to the Sprint Goal, focus on unrelated details, and ramble. I liked how the author handled the issues. He pushes the idea that you should set ground rules or guidelines that everyone understands before conducting the Scrum. Having words or phrases that let the team know you might be rambling or for letting a person quickly explain that non-Sprint Goal work was done seemed like a very good way to professionally conduct a meeting. I would think it’s hard to tell someone that they are rambling more than they need to. To have a buzzer or code word established must help communication without hard feelings and allows everyone to be on the same page.

 I also appreciated prioritizing the use of certain words. Saying “impediments” instead of “blockers” or asking about what a person “accomplished” instead of what they “did”. I wouldn’t normally think to prioritize certain words while conducting a meeting, but his explanation on how it changes the team’s perspective on the work during the Sprint was enlightening.

This blog showed me that when communicating with your group, whether in a daily Scrum or not, there are simple ways to optimize communication. The tips given weren’t groundbreaking, but I can see various ways this could be used when communicating with others. Going forward, I plan on setting an outline of ground rules that the team agrees on so we can effectively communicate.

Link to “Ten Tips for More Effective Daily Scrums” by Mike Cohn – https://www.mountaingoatsoftware.com/blog/ten-tips-for-more-effective-daily-scrums#author

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

Remote Work

     Ever since the pandemic, the modern workplace has gone through many shifts. The realization that workers can still be effective members of the company from their home has changed a lot of people’s perspective on the corporate work environment. Many workers have pushed for remote work to become a staple of the modern job market. It is easy to see the appeal of remote work: No commute, stuffy office, or even stuffier dress code sounds very appealing to me. I personally enjoy the ease of access to one’s job right in their own home. All of that said, the infrastructure for remote work has been in the works for longer than we realized that there was a need for it. In the modern era, cloud computing has become a necessity for almost any job regardless of whether it is remote or not. Services such as AWS, Azure, and Git hub/lab has supplemented developers with the tools to contribute to their workplace from anywhere on the globe. Now teams can be comprised of any developer within the company and can pull from about any talent pool. This comes with its own set of unique challenges though, as remote work moves developers from a singular office space to their respective homes. Balancing time zones, long-distance communication between team members, increased risk to cybersecurity and more come with the territory of all your developers working from their house. Fortunately, Cloud computing answers some of these problems by providing more security and reliability to development teams. Azure and AWS provide secure repositories for teams and reliable access to their work wherever they are. Then there are Applications such as Zoom, which provides communication between team members and can even facilitate daily scrum meetings if needed. Developers have been using git for a long time, and it has served to supplement collaboration in software development. While the pandemic is over and most companies have tried to push their employees to go back to the office, remote work has become a fixture in the modern work landscape. For some companies, it is an economic option since it is cheaper to subscribe to several cloud services than to rent an entire office space. For other companies, it is simply the efficient option. I believe companies should incorporate these innovative technologies to expand their reach, and to shift society further down the path of better work life balance. The past few years have shown us that the old ninetofive has become outdated, and possibly unsustainable.  

https://socpub.com/articles/how-can-cloud-computing-enable-remote-teams-work-more-productively-17895

https://aws.amazon.com/application-hosting/benefits/

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

Remote Work

     Ever since the pandemic, the modern workplace has gone through many shifts. The realization that workers can still be effective members of the company from their home has changed a lot of people’s perspective on the corporate work environment. Many workers have pushed for remote work to become a staple of the modern job market. It is easy to see the appeal of remote work: No commute, stuffy office, or even stuffier dress code sounds very appealing to me. I personally enjoy the ease of access to one’s job right in their own home. All of that said, the infrastructure for remote work has been in the works for longer than we realized that there was a need for it. In the modern era, cloud computing has become a necessity for almost any job regardless of whether it is remote or not. Services such as AWS, Azure, and Git hub/lab has supplemented developers with the tools to contribute to their workplace from anywhere on the globe. Now teams can be comprised of any developer within the company and can pull from about any talent pool. This comes with its own set of unique challenges though, as remote work moves developers from a singular office space to their respective homes. Balancing time zones, long-distance communication between team members, increased risk to cybersecurity and more come with the territory of all your developers working from their house. Fortunately, Cloud computing answers some of these problems by providing more security and reliability to development teams. Azure and AWS provide secure repositories for teams and reliable access to their work wherever they are. Then there are Applications such as Zoom, which provides communication between team members and can even facilitate daily scrum meetings if needed. Developers have been using git for a long time, and it has served to supplement collaboration in software development. While the pandemic is over and most companies have tried to push their employees to go back to the office, remote work has become a fixture in the modern work landscape. For some companies, it is an economic option since it is cheaper to subscribe to several cloud services than to rent an entire office space. For other companies, it is simply the efficient option. I believe companies should incorporate these innovative technologies to expand their reach, and to shift society further down the path of better work life balance. The past few years have shown us that the old ninetofive has become outdated, and possibly unsustainable.  

https://socpub.com/articles/how-can-cloud-computing-enable-remote-teams-work-more-productively-17895

https://aws.amazon.com/application-hosting/benefits/

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

Remote Work

     Ever since the pandemic, the modern workplace has gone through many shifts. The realization that workers can still be effective members of the company from their home has changed a lot of people’s perspective on the corporate work environment. Many workers have pushed for remote work to become a staple of the modern job market. It is easy to see the appeal of remote work: No commute, stuffy office, or even stuffier dress code sounds very appealing to me. I personally enjoy the ease of access to one’s job right in their own home. All of that said, the infrastructure for remote work has been in the works for longer than we realized that there was a need for it. In the modern era, cloud computing has become a necessity for almost any job regardless of whether it is remote or not. Services such as AWS, Azure, and Git hub/lab has supplemented developers with the tools to contribute to their workplace from anywhere on the globe. Now teams can be comprised of any developer within the company and can pull from about any talent pool. This comes with its own set of unique challenges though, as remote work moves developers from a singular office space to their respective homes. Balancing time zones, long-distance communication between team members, increased risk to cybersecurity and more come with the territory of all your developers working from their house. Fortunately, Cloud computing answers some of these problems by providing more security and reliability to development teams. Azure and AWS provide secure repositories for teams and reliable access to their work wherever they are. Then there are Applications such as Zoom, which provides communication between team members and can even facilitate daily scrum meetings if needed. Developers have been using git for a long time, and it has served to supplement collaboration in software development. While the pandemic is over and most companies have tried to push their employees to go back to the office, remote work has become a fixture in the modern work landscape. For some companies, it is an economic option since it is cheaper to subscribe to several cloud services than to rent an entire office space. For other companies, it is simply the efficient option. I believe companies should incorporate these innovative technologies to expand their reach, and to shift society further down the path of better work life balance. The past few years have shown us that the old ninetofive has become outdated, and possibly unsustainable.  

https://socpub.com/articles/how-can-cloud-computing-enable-remote-teams-work-more-productively-17895

https://aws.amazon.com/application-hosting/benefits/

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

Remote Work

     Ever since the pandemic, the modern workplace has gone through many shifts. The realization that workers can still be effective members of the company from their home has changed a lot of people’s perspective on the corporate work environment. Many workers have pushed for remote work to become a staple of the modern job market. It is easy to see the appeal of remote work: No commute, stuffy office, or even stuffier dress code sounds very appealing to me. I personally enjoy the ease of access to one’s job right in their own home. All of that said, the infrastructure for remote work has been in the works for longer than we realized that there was a need for it. In the modern era, cloud computing has become a necessity for almost any job regardless of whether it is remote or not. Services such as AWS, Azure, and Git hub/lab has supplemented developers with the tools to contribute to their workplace from anywhere on the globe. Now teams can be comprised of any developer within the company and can pull from about any talent pool. This comes with its own set of unique challenges though, as remote work moves developers from a singular office space to their respective homes. Balancing time zones, long-distance communication between team members, increased risk to cybersecurity and more come with the territory of all your developers working from their house. Fortunately, Cloud computing answers some of these problems by providing more security and reliability to development teams. Azure and AWS provide secure repositories for teams and reliable access to their work wherever they are. Then there are Applications such as Zoom, which provides communication between team members and can even facilitate daily scrum meetings if needed. Developers have been using git for a long time, and it has served to supplement collaboration in software development. While the pandemic is over and most companies have tried to push their employees to go back to the office, remote work has become a fixture in the modern work landscape. For some companies, it is an economic option since it is cheaper to subscribe to several cloud services than to rent an entire office space. For other companies, it is simply the efficient option. I believe companies should incorporate these innovative technologies to expand their reach, and to shift society further down the path of better work life balance. The past few years have shown us that the old ninetofive has become outdated, and possibly unsustainable.  

https://socpub.com/articles/how-can-cloud-computing-enable-remote-teams-work-more-productively-17895

https://aws.amazon.com/application-hosting/benefits/

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

Remote Work

     Ever since the pandemic, the modern workplace has gone through many shifts. The realization that workers can still be effective members of the company from their home has changed a lot of people’s perspective on the corporate work environment. Many workers have pushed for remote work to become a staple of the modern job market. It is easy to see the appeal of remote work: No commute, stuffy office, or even stuffier dress code sounds very appealing to me. I personally enjoy the ease of access to one’s job right in their own home. All of that said, the infrastructure for remote work has been in the works for longer than we realized that there was a need for it. In the modern era, cloud computing has become a necessity for almost any job regardless of whether it is remote or not. Services such as AWS, Azure, and Git hub/lab has supplemented developers with the tools to contribute to their workplace from anywhere on the globe. Now teams can be comprised of any developer within the company and can pull from about any talent pool. This comes with its own set of unique challenges though, as remote work moves developers from a singular office space to their respective homes. Balancing time zones, long-distance communication between team members, increased risk to cybersecurity and more come with the territory of all your developers working from their house. Fortunately, Cloud computing answers some of these problems by providing more security and reliability to development teams. Azure and AWS provide secure repositories for teams and reliable access to their work wherever they are. Then there are Applications such as Zoom, which provides communication between team members and can even facilitate daily scrum meetings if needed. Developers have been using git for a long time, and it has served to supplement collaboration in software development. While the pandemic is over and most companies have tried to push their employees to go back to the office, remote work has become a fixture in the modern work landscape. For some companies, it is an economic option since it is cheaper to subscribe to several cloud services than to rent an entire office space. For other companies, it is simply the efficient option. I believe companies should incorporate these innovative technologies to expand their reach, and to shift society further down the path of better work life balance. The past few years have shown us that the old ninetofive has become outdated, and possibly unsustainable.  

https://socpub.com/articles/how-can-cloud-computing-enable-remote-teams-work-more-productively-17895

https://aws.amazon.com/application-hosting/benefits/

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

Remote Work

     Ever since the pandemic, the modern workplace has gone through many shifts. The realization that workers can still be effective members of the company from their home has changed a lot of people’s perspective on the corporate work environment. Many workers have pushed for remote work to become a staple of the modern job market. It is easy to see the appeal of remote work: No commute, stuffy office, or even stuffier dress code sounds very appealing to me. I personally enjoy the ease of access to one’s job right in their own home. All of that said, the infrastructure for remote work has been in the works for longer than we realized that there was a need for it. In the modern era, cloud computing has become a necessity for almost any job regardless of whether it is remote or not. Services such as AWS, Azure, and Git hub/lab has supplemented developers with the tools to contribute to their workplace from anywhere on the globe. Now teams can be comprised of any developer within the company and can pull from about any talent pool. This comes with its own set of unique challenges though, as remote work moves developers from a singular office space to their respective homes. Balancing time zones, long-distance communication between team members, increased risk to cybersecurity and more come with the territory of all your developers working from their house. Fortunately, Cloud computing answers some of these problems by providing more security and reliability to development teams. Azure and AWS provide secure repositories for teams and reliable access to their work wherever they are. Then there are Applications such as Zoom, which provides communication between team members and can even facilitate daily scrum meetings if needed. Developers have been using git for a long time, and it has served to supplement collaboration in software development. While the pandemic is over and most companies have tried to push their employees to go back to the office, remote work has become a fixture in the modern work landscape. For some companies, it is an economic option since it is cheaper to subscribe to several cloud services than to rent an entire office space. For other companies, it is simply the efficient option. I believe companies should incorporate these innovative technologies to expand their reach, and to shift society further down the path of better work life balance. The past few years have shown us that the old ninetofive has become outdated, and possibly unsustainable.  

https://socpub.com/articles/how-can-cloud-computing-enable-remote-teams-work-more-productively-17895

https://aws.amazon.com/application-hosting/benefits/

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.