Getting Started with Axios

https://www.sitepoint.com/axios-beginner-guide/

This week I decided to write about Axios for JavaScript. We are using Axios on our front end. So I thought it could be helpful to read an article about Axios, and learn more about what Axios does and how it works.

Axios can be used on backend node.js applications. And used in JavaScript files/ frameworks like Vue, React, and Angular. One of the most common uses of Axios is making HTTP requests to send, receive, or save data. Data passed in post operations is conveniently sent in JSON format. Below is an example of an axios HTTP request method.

axios({
  method: 'post',
  url: '/login',
  data: {
    user: 'brunos',
    lastName: 'ilovenodejs'
  }
});

Axios also has a convenient way to receive responses. Axios returns a promise that is either a response or an error method. A response object is returned with a successful call, and the .then() function is called. The response object has data, which is the payload in JSON. The status in the form of an HTTP code. The status text, which is an HTTP message. Headers, returned by the server. The original request information. And the HTTP request in the XMLHTTPRequest object format.

If an Axios request returns an error, the promise will be rejected and an error object is returned. An error object includes: an error message, a response object, a request, and the original request.

axios.get('/product/9')
  .then(response => console.log(response))
  .catch(error => console.log(error));

To better understand Axios, it is worth explaining what a JavaScript promise is, and why programmers use them. Promises are used to handle asynchronous functions in JavaScript. Promises may return a value or payload, or an error message. Each promise has a state. A promise can take three different states. fufilled, rejected, and pending. In the code below process will not execute until fetch executes. And handleErrors will not execute until save has executed. .catch will handle erros within process() and save().

fetch(url)
.then(process)
.then(save)
.catch(handleErrors)
;

Axios, and promises in general are important pieces of software development today. When using the microservice architecture. Sending and receiving data is an essential function of each service. And Axios and promsies help developers do just that. Axios and promises work asynchronously meaning that they can run different parts of the program simultaneously. This is another important concept because sometimes differrent parts of a web page load asynchronously. So an asynchronous method could render the first available piece of data.

Resume’s For Software Engineers

https://www.hackreactor.com/blog/6-tips-for-a-software-engineer-resume-that-gets-you-hired

In order to use the skills we are using in class in a professional capacity. students need to land a job as a Software Engineer. The first step in this process is sending a resume to a potential employer. There are some good resources out there online, and on campus about resume building. And that is a great place to start. But this article focuses on Software resume’s in particular. A Software Engineer resume should be broken into experience, education, skills, and projects.

One important part of any resume is a job history. In the case of new developers it may not be necessary to give a long, detailed employment history. This is because not all of applicant’s past jobs are related to software development. In my case. I have one internship. And I list two unrelated jobs. But I don’t go into detail of the unrelated job responsibilities. A unique part of a software resume is a project section. This is important for new engineers that do not have an extensive software job history. Employers like to see personal projects because personal projects show the employer that the applicant is passionate about building software. The education piece of the resume is fairly straight forward. The applicant should just write down their university, area of study, and GPA (assuming the GPA is reasonably impressive). The skills section is also straight forward. The applicant should list programming languages, frameworks, and other tools they have used in internships, classes, and personal projects. I personally do not include “fluff” skills like attention to detail, written and verabal communication, etc.

Another helpful tip is to consider ATS software. ATS stands for Applicant Tracking Software. This is an AI that looks for keywords and send resumes that match those keywords to recruiters at the comany. The author recommends using a simple format, and not including impages or tables in the resume that could trip up the ATS. Applicants can identify keywords used by the ATS in the job posting. A resume that has keywords from the posting is more likely to be seen by a recruiter. This leads to the final tip. Applicants should tailor their resume to the job posting using the skills and wording from the job posting. This can be time consuming, but in my opinion this is worth the extra time. One thing that I would add is that I don’t add skills that I don’t actually have. If I make it to the interview by adding skills that I don’t actually have. The interviewer will ask me about those skills, and will quickly learn that I was not honest. This article was very helpful for me. And I hope that some of you find my summary and opinion helpful in your respective job searches.

Coding Interviews

https://levelup.gitconnected.com/the-ultimate-guide-to-coding-interviews-b11fc1efc9b2

This week I chose to write about coding interviews. The reason that I chose this topic is that the coding interview is an essential part of a software developers career. A student can finish a Computer Science program, go to a bootcamp, or finish an open source program. But if they can’t pass a coding interview they will not be able to get a job as a Software Engineer.

The article that I chose summarizes the types of questions and topics that comapanies test candidates on. And includes some resources to help candidates perform well in their interviews. Before a candidate can prepare for the specifics of an interview they have to be somewhat proficient in a high level programming language such as Java, C++, or Python. Most interviews focus on Data Structures and Algorithms. So Computer science students have a good head start on that. The article recommends GeeksForGeeks to learn more about Data Structures and Algorithms, or as a refresher for candidates that are already familiar with Data Structues and Algorithms. I personally use GeeksForGeeks pretty much every time I am coding and learning a new concept, or need a refresher. The articled also recommends the LeetCode top interview questions collection. I am personally working my way through this course now. The next step is to choose some companies, and solve problems that other interviewees were asked. The final step is to start applying and interviewing for Software Engineer roles.

I enjoyed this article, and I think it is helpful for new Engineers like myself looking for their first job. Personally, I have mixed feelings about the coding interview process. I originally thought that a CS degree with a decent GPA and some internship experience would be enough to land an entry level Software job, but that simply is not the case. Those qualifications can land a candidate an interview, but from there the candidate needs to code their way into an offer. One common complaint about the interview process is that the types of questions and Data Structures that come up in interviews are almost never used in the industry. On the other hand, companies need a way to determine if candidates actually know how to code. If a candidate cannot complete a simple Fizzbuzz question, they probably won’t be a strong contributer. Algorithm efficiency is also an important part of the interview process, and writing efficient code is extremely important in the industry. Regradless of my opinion, mastering the coding interview is part of being a Software Engineer. And preparing for interviews has made me a stronger programmer, and problem solver.

REST APIs

I chose to write about REST APIs this weeek, because we are covering them in class. And because REST APIs are ubiquiutous in Software Development these days. Application program interface or APIs are a a way of sending data between services over the internet. APIs have become popular because they allow companies to use already available tools like email automation, username and password validation, and payment processing to other established services. This allows developers to focus on the unique business demands of their customers and products.

In web development the client is the service or person making requests to access the data within the application. Most often, the browser is the client. A resource is a piece of information that the API can provide for the client. A resource needs to have a unique indentifier. A server receives and fufills client requests. REST stands for Representational State Transfer. When the client requests a resource from the API it comes in the reource’s current state, in a standardized representation.

At my job we have one workflow problem that could be swolved with an API. We have a client side web application where customers place orders, and an internal desktop application where we keep track of primers needed for those orders. The internal desktop application is called the primer log. The client application is a web application, but the internal application is not. This causes our company all kinds of problems. My coworkers will often say “I wish these services could talk to eachother”. And that is exactly what an API does. Our internal application is keeping track of which primers we have, where they are, and which are dry. But the customers cannot see that. Customers will frequently request that we use primers that we do not have onsite.

We will eventually recreate our primer log as a web application, which would allow our client web application and our primer log to communicate. So when a customer requests we use a primer, that would be a client request for a resource from the API. The API would check our internal primer log, and send a response back to the client indicating whether or not the requested primer is onsite. This API response could prompt the client to order the required primer if we did not have it onsite. That is ROI, not to mention the time it would save my team, and the turn around time for our customers. This is just an example of how an API can solve a real life business problem.

MVC Design Pattern

Source: https://www.geeksforgeeks.org/mvc-design-pattern/

The Model View Controller pattern is a common design pattern used in web development. I chose to write about the MVC design pattern this week, because I have experience using it, but at the time I did not realize that I was using a design pattern. At that point I was not familiar with the idea of a design pattern, or the extent to which they are used in Software Develpment. My thought is that doing some intentional study of the topic will solidify my knowledge. My experience with MVC was in ASP.NET Core. But some other popular MVC frameworks are React, Angular, and Laravel.

With MVC the data model, application data, presentation information, and control information are seperate objects. The Model contains application data, and does not present the data to the user. In my experience these Classes contained data like barcodes and timestamps. But did not have methods that manipulate the data, define API methods, or a present a UI. The Controller Class is an intermediary between the Model classes and the View Class. The Controller Class contains methods that execute on Models. In my experience, I mostly used Controllers for API calls. These API methods uploaded text files to a database with an HTTP post method, and retrieved JSON data with a HTTP get method. The View Class prescents the data to the user. In my experience I used .Vue files to present data. The View files instanced of Models, presented as JSON objects, and the Controller contains API calls that allowed the transfer of data from the Model to the View.

Like all Design Patterns in Software Development there are advnatages and disadvantages to the Model View Controller pattern. Some Advantages are that multiple developers can work simultaneoulsy on the model, controller and views. Another Advantage is the MVC allows for logical grouping of data. And Models can have more than one View. Some disadvantages is the added layer of abstraction can make working on and navigating the service to be complex. I ended up tracing methods from class to class, using built in Visual Studio tools, because remembering where the method I was looking for became cumbersome. Using the MVC design pattern creates many files, because each layer of every feature of the service has a Model, Controller, and View. With all that being said, I still think that the MVC pattern is great for meduim to large scale services.

JavaScript and JavaScript Frameworks

Source: https://trio.dev/blog/javascript-framework

I chose to write about JavaScript frameworks this week, because they are so common in development today. And we will be covering Vue.js in this course. JavaScript is the most popular programming language. And it has been that way for many years. Web browsers can compile JavaScript natively so a user does not need to download a seperate piece of software to view the website. Because JavaScript is so ubiquitous, and building websites can be very time consuming, developers started to create JavaScript libraries and frameworks to make the process easier. Frameworks are so prevalent that using JavaScript without a framework is commonly referred to as “Vanilla” JavaScript.

I spend time every week looking at Software Engineer roles on linkedIn, and most companies want candidates to know JavaScript. Many companies mention React, Angular, or Vue. Some posts simply say JavaScript. But I suspect that some of these companies also use a JS framework, but the person that wrote the posting may not know the nuances of Software Development.

A JavaScipt framework contains pre-written JavaScipt code that is commonly used across many web applications. Some examples are creating a header, or accessing an API with HTTP methods and Axios. The terms JavaScript library and framework are at times used interchangeably. But there are some differences. A JavaScript library uses specific functions from parent code. But a framework defines the structure of an application using already written, reusable code. JavaScript frameworks have become popular because they save teams time, which saves money.

The JavaScript framwork I am most familiar with is Vue.js. I used Vue to create a dynamic web page for my internship. I am not very experienced with front end web development, and mostly worked independently. So this was quite challenging. But using a framework made things easier. with Vue I displayed JavaScript Objects or JSON data with V-for and V-if statements. Anybody that knows how to use for loops and conditionals could figure these out. But what is different about V-for is that I could conditionally render HTML elements. A good example would be if an array’s length is not zero, display the array. And with V-for you can dynamically diplay elements, from an array or an object in Key value pairs, just keys, or just values. Vue allowed me to display an HTTP in response in JSON format using V-if and V-for loops. This would not be possible using just HTML and CSS.

Companies are trying to find ways to create software and web applications faster. And JavaScript frameworks can help them achieve this. Personally, I am looking forward to learning more about JavaScript frameworks in the next two semetsers, and in my career.

Docker

Source:

https://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/

I chose to read and write a blog post about Docker for my Week two post. I chose Docker because it is an important tool in the development community today. And because it runs in the background while we work. What Docker is actually doing, and how it accomplishes that are abstracted from us. So I wanted to learn more about how Docker works, and why so many teams are using it today.

With Docker, developers can run their applications in containers, instead of a virtual machine. A container is a unit of software that contains everything that an application needs to run on a host computer. The container is the same for all developers that access it.

Containers are an enticing alternative to Vitual machines because they have much less intensive system requirements. A VM simulates hardware and has a complete operating system, but a docker container does not. Instead, a container runs on a single linux instance. This allows developers to run multiple docker containers simultaneously. And saves the company money in server costs.

Docker containers also work well with the agile methodology of Continous Deployment. This means that developers are integrating and deploying their code quickly and regularly. Agile methodologies are becoming the industry standard. With Agile, the development process is broken into smaller units of work, that are divided amongsts small teams. Docker helps Agile teams collaborate within a shared version of their application within a container.

Docker is used by large companies in enterprise software where they are sometimes building massive applications. Docker containers make workloads more portable. As different containers can run different versions of an application, that can be running on seperate servers.

Over the summer I did an internship where I worked on enternprise .NET web applications. During my internship, we used docker containers for our Dev environment when building web applications. And we also used a Docker container for our shared PostGreSQL databases. This allowed us to work with the same sample data, in our databases, and work in the same Dev environment, before sending the next update to User Acceptance Testing.

Reading this blog has helped me understand how Docker works and why it is popular. And has given me a new perspective on why my company uses Docker. I will be using this knowledge as we are using Docker in this course, and the Software Development Capstone project. I will most likely use this knowledge in my career, as so many companies are using docker today.

Introductory Post CS-343

Hi guys. My name is Jim Spisto. I am a senior here at Worcester State. I am originally from Sterling MA. I am excited get back to school. And looking forward to work with you all.