DPS909 0.2 Release – Hacktoberfest Conclusion

For Hacktoberfest, I completed 5 pull requests for 5 different issues in different repositories.

The following is a list of the issues I worked with.

Issues

  1. Fix error character “!” event not found #4
  2. Add a good about page layout #7
  3. Add two matrices #74
  4. Find the height of binary tree – javascript #22
  5. Add program to count dyck paths #6

The following is a list of the pull requests that I made, referencing the respective issues above.

Pull Requests

  1. Fix #4 Use ‘ ‘, Add equal #18
  2. About page #26
  3. Added addTwoMatrices.cpp -74 #82
  4. Fix 22 – Height of binary tree #49
  5. Count dyck paths #138

When I first started Hacktoberfest I was a bit nervous because I was pretty sure at the beginning that I would be working with coding geniuses and now that Hacktoberfest is done, I like to think that I was right. Mainly because of the collection of issues available and the amount of code that has been written.

Issue 1

When deciding what to work on for my first issue, I clicked on the link to Possible Issues to Work On and I was taken to a page with hundreds of issues in different programming languages. I first noticed that the most issues available were in Javascript, so I felt that I should work in Javascript towards the end of Hacktoberfest, because I assumed that those issues might be the most challenging since there were so many issues in Javascript. At the bottom of the list of languages used in the posted issues was Ruby, Typescript, and C#. I have experience in C# so that was a language that I did not to work on because I wanted to experiment with something that I have not done before, which leaves Ruby and Typescript. I had never heard of either languages so I first looked at the issues in Ruby and I found this one project that was sort of interesting. The following is the link to the issue.

Fix error character “!” event not found #4

The issue was that the “!” character was not found. The project was a program where a user would compile the program in Ruby, then enter a string and the string would be displayed in bigger letters. The letters weren’t increased in font size, but the letters were just made up of different characters and displayed in the following lines like the following image.

OpenSource

The problem was the if the user entered the “!” character, then the error, -bash: !": event not found

After some research, it turns out that the user only had to enclose the string in single quotes, ‘ ‘.  After completing the research and adding some code to create a giant equals sign, then making the pull request, I felt like I had gained some basic knowledge of Ruby, and it was something that I could put under my resume under technical skills. What also helped was working with Git Bash to make the pull request. It was my third pull request for the class and the extra practice helped because working with GitHub was always intimidating.

Issue 2

For the second issue, I had to work with HTML and CSS. The following is the issue that I chose to work on.

Add a good about page layout #7

While deciding to chose an issue I had a lot of other course work at the time so I figured it would be better to work with an easy issue so I could complete it quickly and then go back to my other course work. The issue was asking to work on an About page to the already existing website. I made some additions in CSS to make certain sections of the About page standout and after making the additions, I made the pull request. This pull request served as a good review in styling with CSS since I don’t get a lot of work in that subject these days.

Issue 3

The third issue that I decided to work in was in C++. The issue was asking for a program where two 2-dimensional matrices can be added with each other. The following is the issue.

Add two matrices #74

It had been sometime that I had worked with C++ so I felt that working on this issue was a good refresher in the subject. I had to first research if the matrices had to be the same dimension or not in order to be added. After doing the research I made the program and I made sure to have the user input the dimensions of the matrices which is done once. Then the user would enter the values and after, the matrices would be added with the sum displaying at the end. After completing this issue and making the pull request, I felt that working with GitHub and Git Bash was not as intimidating compared to when I first started this course. I felt that I was starting to realize how helpful GitHub was when it came to collaborating in different projects and being able to see the changes that are made in different projects and the issues available to the public.

Issue 4

My fourth issue was an issue using Javascript. At this point in Hacktoberfest, a lot of the issues that are being posted are being taken quickly by others so while working on other course work, I would have the issues page on the side and once in a while I would refresh that page to see what new issues are being posted that I felt that I could work on. At this point, I wanted to work on Javascript because of the number of issues that are posted but many of the issues already there were taken or just very old. Finally I found an issue that I felt I could solve because I had some experience in the subject. The following is the issue.

Find the height of binary tree – javascript #22

The issue was to find the height of a binary tree. I had experience working with data structures which includes binary trees. At first a refresher was needed so I could remember, not how to code a binary tree, but how it is created and how values are inserted. After my refresher, I had an idea as to what needed to be done and how the height is solved so I created my short program to create a binary tree and to find the height of the binary tree. After creating a set of example numbers and running the program, I was able to correctly find the height of the binary tree. I also added two other functions to display the inserted variables in two different traversals which were preoder and inorder.

Issue 5

My fifth and final issue was using C++ again. This is towards the end of Hacktoberfest and at this time I had a lot of work for my other courses so I figured I would figure out an issue quickly just so I could continue with my other course work. I’ve taken two Calculus courses at a University level so I like to think that I have a good background when it comes to math. For this issue, I had to create a program where the number of Dyck paths could be found. A Dyck path is a staircase walk from (0, 0) to (n, n) that lies strictly below (but may touch) the diagonal y = x. The number of Dyck paths of order n is given by the Catalan number. Consider a n x n grid with indexes of top left corner as (0, 0). Dyck path is a staircase walk from bottom left, i.e., (n-1, 0) to top right, i.e., (0, n-1) that lies above the diagonal cells (or cells on line from bottom left to top right). The following is the equation that had to be used in order to find the number of Dyck paths.

PR5.2

Creating a program for this equation seemed straightforward, but by increasing the value n, the value of C goes a lot higher too. So I had to research data types with the highest range in order to get the exact value of the number of Dyck paths. At the end, I finished the program, made my pull request, and I was officially done with Hacktoberfest.

Looking back, Hacktoberfest was been a great learning opportunity when it comes to working in open source, and I am glad I participated in it because I have definitely improved my knowledge in GitHub and Git Bash. By continuously working on different issues and contributing code to different projects, I am able to say that I have a decent background in open source. At first, working with GitHub and Git Bash did not go so well, especially when I was not able to commit for some reason and having to do research, but eventually I was able to complete the pull requests with no problems. I think in the future I would like to work in larger open source projects, and work with programs with many lines of code, instead of just creating my own programs from scratch. That would be a good opportunity and learning experience when going into the professional  field because I will have to work with existing programs and somehow improve or enhance what has been done already. At the beginning, I was very hesitant of taking the Open Source class because I knew I would have to work with existing projects that have been create by people around the world, but now I’m very pleased that I took this course because I feel I have expanded my knowledge and experience in different areas of the IT field.

References

C++

Dyck Path

HTML/CSS

Javascript

Ruby

DPS909 0.2 Release – Pull Request 5

My fifth and final pull request for the 0.2 Release was on C++. This my second time in this release working with C++. C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. When trying to figure out what I should work on for my final pull request, I was not able to be picky about it. A lot of the issues that would go up would get taken minutes after. Some people might not leave comments under issues. Instead they would just reference the issue in their pull request. So if I’m scrolling through the issues and see an issue with no comments I would get excited thinking I could work on it, but most of the time, the issue would be completed with some one else leaving a link to their pull request on the issue page. At first I sorted the issues by Least Commented but that would mostly show issues from a year ago. So I went back to sorting the issues by Newest. I had to go back a couple of pages and finally I found an issue that was posted four days ago which I felt I was confident in completing. The following is the link to the issue.

Add program to count dyck paths #6

What was being asked from the issue was to create a new file, where the number of Dyck Paths could be solved. A Dyck path is a staircase walk from (0, 0) to (n, n) that lies strictly below (but may touch) the diagonal y = x. The number of Dyck paths of order n is given by the Catalan number.

Consider a n x n grid with indexes of top left corner as (0, 0). Dyck path is a staircase walk from bottom left, i.e., (n-1, 0) to top right, i.e., (0, n-1) that lies above the diagonal cells (or cells on line from bottom left to top right).

PR5

The following are example inputs:

  • Input: n = 1 – Output: 1
  • Input: n = 2 – Output: 2
  • Input: n = 3 – Output: 5
  • Input: n = 4 – Output: 14

The following is the mathematical equation to calculate the Dyck  Path which is given by the Catalan Number C(n).

PR5.1

In terms of what I had in my code was the following equation. It seemed simple enough, but when it came to calculating the factorial, I had to take some time to figure that out.

PR5.2

Since there are three instances of using the factorial in the equation, it made sense to make a factorial function. I created two more variables to hold the values after the value entered is multiplied by 2 and added with 1. I coded everything but at first something did not seem right. When I entered the value 7 to calculate the number of Dyck paths, I was getting a different value compared to what was calculated on my sheet of paper because I was testing to see if my program was working properly. It turns out that because I was using an int data type, the number of Dyck paths would be beyond the range of an int data type. I looked up different data types and used the data type with the highest range which was a long long. Since we’re only working with positive values, I made the variables of type unsigned long long int. After changing the data types, and after entering 7 to calculate the number of Dyck paths, I got the same value as what I had calculated manually. The following image is an example of different inputs with the number of Dyck paths calculated.

PR5.3

After completing my program, I made the pull request and made sure to reference the issue in my pull request.

Count dyck paths #138

After completing this second release, I feel more confident working with GitHub and Git Bash. For the third and fourth release, I look forward to working with larger projects and collaborating with more people and starting on new projects with people from our class.

References

Dyck Path

C++

Tutorial

DPS909 0.2 Release – Pull Request 4

My fourth pull request was on another topic that I have not worked for some time. This time I was working with Javascript. Javascript is a high-level, interpreted programming language. It is a language which is also characterized as dynamic, weakly typed, prototype-based and multi-paradigm. I chose to work with Javascript because I had not made a pull request in Javascript for this assignment and Javascript is the language that has the most issues in the list for possible issues to work on. When I first started in my program I did a lot of work in Javascript in my earlier semesters but as the semesters went on, I was working with Javascript less compared to the earlier semesters.

But over the winter and summer semester, I did a lot of work in Visual Basic during my work term working at Environment and Climate Change Canada. At the government, a lot of old programming langauges are still being used like Visual Basic and PHP, which I worked with. While learning Visual Basic and before starting on the assigned work, I was able to quickly grasp the content because Visual Basic was similar to Javascript, so remembering the content for this issue was a bit easier for me.

The following is the issue that was posted that I decided to work on and hopefully make a pull request.

Find the height of binary tree – javascript #22

What was being asked from the issue was to add a new file where the user would be able to find the height of a binary tree. First I had to review binary trees and how they were programmed. I took a course during the Fall 2016 semester that was about Data Structures but in that course the language that we used was C++. For this issue, we are asked to program in Javascript. In my opinion, coding in Javascript is a lot simpler than coding in C++ but coding the binary tree would be different because I was used to doing it in C++.

After some research and refreshing my mind in the subject, the first step was to create a binary tree. I had to create functions to create the root of the tree, and functions to set the left and right nodes of the created root. Each function would be used every time a new node was inserted. In order to insert a new node I created a function called insertNode() which takes the root and the new node. Then to test if the tree was created properly I had to insert values into the tree. I created a function called insertValue() which inserts five values into the binary tree and then three function calls are made within the insertValue() function. The first two function calls are to display the values of the binary tree. The first function call displays the values in a preoder traversal. A preorder traversal displays the node values starting with the root. Then it works its way to the left-most node displaying the values on its way. Then it goes back to the root and goes to the right-most node displaying the values on its way. The second function call displays the values in an inorder traversal. A inorder traversal displays the node values starting with the left-most node. Then it works its way to the root displaying all the other nodes, then displays the nodes going to the right of the tree.

The last function call, height(), gets the height of the binary tree after the values have been inserted into the tree. The height of a binary tree would be the largest number of edges in a path from the root node to the leaf node. So after creating the binary tree and populating the tree with values, the height function is called which would add one every time a node was there and it would go through the function recursively.

The following image shows exactly the two traversals and the height of the binary tree.

PR4

After completing the code and testing it multiple times with different values, I made sure to make a pull request and reference the issue. The following is the link to the pull request that I made.

Fix 22 – Height of binary tree #49

References

Javascript

Code Academy

Binary Tree

DPS909 0.2 Release – Pull Request 3

My third pull request was on another topic that I have not done in a long time. This time I was working with C++. C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. I chose to work with C++ because I have a somewhat decent background in the language even though I have not worked with C++ in almost two years. But before that, I was working extensively in C++. I decided to work with C++ for my third pull request because it had been a while since I have used it so I decided to use this pull request as a somewhat refresher in the topic. I’m sure for my next pull request I can work with a language that I haven’t used for my previous two pull requests. The following is the issue that was posted that I decided to work on.

Add two matrices #74

What was being asked from the issue was to add a new file where two two dimensional matrices would add with each other. First I had to review two dimensional arrays. I also had to make sure that if two separate two dimensional arrays that had different dimensions were able to add with each other. After doing research I learned that both two dimensional arrays had to have the same dimensions in order to be added with each other. So first I had to make sure that both two dimensional arrays that are being added are the same dimension. That means if one array was 2×4 the other array had to be 2×4 and not 4×2. I decided that the user should input the numbers of rows and columns to create the dimension of the arrays, which is done in the following image.

PR3

After the user enters the dimension of the array, the user must enter values to populate both arrays. I could have set values when the program loads but I figured it would be better if the user would enter their own values. When the user enters their own values, I made sure to display which matrix has values being entered and the position of the value being entered next to the text field. So the values are entered in the following image.

PR31

After all of the values are entered, the next field displays the sum of each position after both matrices are added like in the following image.

PR32

After making more tests to make sure everything was done correctly, I made the pull request and made sure to reference the issue in the pull request which is done in the following link. I am glad I completed this issue because it has been some time since I’ve worked with C++ and this was a simple refresher in the language. I believe this has been my fourth pull request and working with Git Bash has become natural to me. This assignment has helped when it comes to working with different problems in different languages and making pull requests to GitHub helps when it comes to understanding how the repositories work. The first time I was working with GitHub I was always so confused as to how it all worked but know it is all very simple and easy to understand.

Added addTwoMatrices.cpp -74 #82

References

C++

Tutorial

 

DPS909 0.2 Release – Pull Request 2

My second pull request was on a topic that I have not done in a long time. This time, I was working with HTML and CSS. Hypertext Markup Language (HTML) is the standard markup language for creating web pages and web applications. Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language like HTML. I chose to work with HTML and CSS because I have a good background in the topics and because I was working on other assignments at the time so I did not have the time to experiment with a new programming language. Hopefully for my next pull request I can try something new depending on what my schedule looks like. The following is the issue that was posted that I decided to work on.

Add a good about page layout #7

What was being asked from the issue was to add a page for about.html. What I was updating was someones website which included a home, contact, and about page. The about page already had some work done to it, so I added whatever I could think of to improve the overall look of the website.

The first change that I made was to add a new CSS for the about page. I also made sure to link the about.html page to the about.css sheet. Then for the about.css page, I tried different colors and patterns to improve the overall look. The website already had an image taking the top half of the page so it was difficult to add colors that would go with the placed image. So I made some minor improvements like making changes to the font and the font style. I changed the font to Lucida Console, made it bold, and added a shadow to the header at the beginning of the about section. After my changes were completed, I made the pull request but I happened to run into some problems. The following is the link to my pull request.

About page #26

The repository that I was working with had a specific branch that had all of the necessary files including the about.html page that I needed to work with. So initially I was pushing to the master branch but in order for my pull request to be merged, I had to push into the hacktoberfest branch that was already created. After I realized this mistake, I made sure to complete my pull request to the hacktoberfest branch.

After completing this pull request, I am feeling more confident when it comes to GitHub and Open Source. But now that many people are participating in hacktoberfest, it is a bit difficult to find a recent issue that no one has taken yet because it seems that an issue could be posted for five minutes and then it gets taken. So I will make sure I have sufficient time before the next due date to get an issue so I won’t run into any problems in the future.

References

HTML

CSS

DPS909 0.2 Release – Pull Request 1

My first pull request was on a new language I have not worked with before called Ruby. Ruby is a dynamic, interpreted, reflective, object-oriented, general-purpose programming language. Ruby supports multiple programming paradigms, including functional, object-oriented, and imperative. It also has a dynamic type system and automatic memory management. I chose to work with Ruby because it was a chance to work with something that I have not worked with before. The following is the issue that was posted that I decided to work on. 

Fix error character “!” event not found #4

The program that had to be fixed was not exactly a difficult concept. Using Ruby, the user can enter text into the command line after compiling the program, and that text would be converted into giant text using certain symbols found on the keyboard, like the following. If no text was entered then the string RUBY LETTERS would be displayed.

HelloWorldOpenSourceRubyLetters

So the text within the quotes would be read from the command line, then the program would go through each character within the quotes. Each character would be matched with what is stored in the array of characters in the program. An array will be formed containing references to the collection of characters array and each element will displayed beneath the commands. 

The issue that I chose to work had to do with an exclamation mark. As you can see, when an exclamation mark is included in the string, you get the following error.
-bash: !": event not found

HelloWorldFail

So the first task in fixing this issue was to clone the repository, create a branch, and reference the issue in that branch. After completing all of the necessary tasks for the initial GitHub phase, I studied the program file letters.rb. I learned how the user designed the program and decided which areas of the program that I could change to help fix this error. I thought by manipulating the string from the command line would help but it didn’t. I tried manipulating the user input string, or the string when an exclamation mark is called from the collection of keyboard symbols would work but it did not. So I resorted to the last tool which is used whenever I run into a dead end, which is Google. I looked through different forums to figure out why the exclamation mark was not found. It turns out that the exclamation mark is not allowed in bash. That is not entirely true. The exclamation mark is part of history expansion in bash. What does that mean? History expansion is performed immediately after a complete line is read, before the shell breaks it into words. History expansion is the first stage of processing, even before shell parsing, which is why double quotes don’t protect ! the latter is processed before double quotes. It is handled by the history library, which implements its own parsing, with a few ways of protecting the history operator. By the time the shell’s parser starts handling a string, it’s already been parsed by the history library and history expansion has already taken place. Enclosing characters in double quotes " " preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !.

It turns out that the issue that I took upon myself did not required any code to fix the program because the program did not need any fixing from the beginning. It turns out that all the user has to do is enclose the string in single quotes to avoid the error: -bash: !": event not found

By using single quotes ' ' the user can escape the history expansion character, but the history expansion character is also treated as quoted if it immediately precedes the closing double quote " " in a double-quoted string. In the following examples, the strings are enclosed in single quotes ' ' and contain exclamation marks. 

NoProblem

Since there were no changes that had to be made to the code, I decided to add a character since that was the first issue that was made regarding this repository. The character that I added to the collection of characters was the equals sign =

Add special characters #1

The equals sign was simply two lines of underscores and after testing my addition to the program I made sure to add the changed file, commit, push, and finally make the pull request. 

AEqualAExclamation

Pull Request – Fix #4 Use ‘ ‘, Add equal #18

In my pull request I left a description of why the exclamation mark would return an error and I mentioned to use the single quotes ' ' from now on to avoid any further errors. I also made sure to reference the very first issue issue that was filed which was to add special characters since I added the equals sign to the program. 

After completing this pull request, I feel that I am starting to become more comfortable with GitHub and Open Source in general. It was a bit intimidating at first since GitHub is relatively new to me, and there are so many languages out there that I have not worked with so working on an issue that was created by someone that I don’t know, in a language in which I am inexperienced was a bit terrifying. But after studying the code and doing the research I don’t exactly feel intimidated to take on new tasks in the future and I am confident that I can complete this release on time.

References

Bash Reference Manual: History Interaction

Ruby

DPS909 Fall 2018 Release 0.1

This first release was designed to expose myself to the common workflows and tools involved in contributing to open source projects on GitHub and personally, I think this first release was successful in doing that. By completing this first release, I had a hands-on-experience in completing tests for the Filer web filesystem project. Filer implements the node.js fs module and apart from creating a blog on two node.js fs modules in my previous blog, this was the first time I was using the node.js fs module to implement some type of test for a specific issue.

Before enrolling in Open Source this semester, I had limited experience when it came to Git Bash and GitHub. I already had a GitHub account, but it was mainly used to join different groups and it wasn’t exactly used to contribute to some sort of open source project. When it came to Git Bash, this was my first time using it and I obviously ran into a lot of problems from the start. But after continuously working through the issue I created I was finally able to successfully build my test and pass all checks and not have any conflicts with my branch and the base branch.

The following are the tasks that needed to be done in order to complete the first release.

  • An Issue should be filed before your create your Pull Request. The Issue must have a complete subject and description of the problem or change you believe needs to be made. The Issue must also be assigned by the Open Source professor in order to move forward with the release. – In order to create an Issue, I had to first go through the filer repository and find a file to work on and complete my testing. I found the time-flags.spec.js file and decided to add a test with promises.
  • The Pull Request should reference the Issue Number in its description (e.g., “Fixes #123: Add test for …”) – The Issue Number that was assigned when I first created the Issue was #469 and I did reference the Issue Number in my Pull Request.
  • Changes must be made on a new branch (e.g., if you are fixing Issue 123, use issue-123 as your branch name) – All of my changes were done in the branch: issue-469.
  • Adds a Test, and/or Code Fix, and/or Documentation update – I completed all of my changes on Notepad++ and after making changes I would build the file on Git Bash to check if everything compiled. If the build was unsuccessful then I would continue with debugging.
  • Code or Tests must pass eslint – After running npm run lint and npm run lint:fix the tests would pass eslint.
  • All Unit Tests must pass after your changes are made (i.e., new tests must pass, and you must not break existing tests). – After numerous builds, eventually I was able to receive a success when it came to my added test.
  • Co-ordination with other student/community Pull Requests. Make sure you don’t duplicate another fix or change that someone else has already done. – Before creating an issue, I made sure to check that no one else had already completed a test similar to what I was planning on doing.

When I first decided to create a test for time-flags.spec.js, more specifically not updating ctime when calling fs.rename(), I was lost. Node.js was a new subject and even with the all of the research I felt like I wasn’t ready to complete a test for the Issue I created. It didn’t matter because I needed to get started so I started creating code that I believed would be an acceptable test to my Issue. What I was doing at first was wrong and with the help from others on Slack, I was able to understand the first release, more specifically, my code needed to be completed. I tested fs.rename() using promises so ctime does not get updated when calling fs.rename() with NOCTIME. NOCTIME was a flag and whenever the flag was called, stat() should not be updated. My process for this release was to do as much research as possible to understand how to apply promises for testing functions. Over time it was easier to understand since I was making it more difficult than it needed to be. After completing my test I learned how to apply promises to fs.rename(), and more importantly, how to use Git Bash. I had never made commits and pull requests on my own before so this was a great learning experience for me. I would definitely see myself contributing to Open Source projects in the future with the new skills that I have gained. In terms of what I would do differently would be to complete more research on certain topics so I would not complete my tests incorrectly at first and then have to make major changes toward the end.

The following is the link to the Issue that I filed.

Link To My Issue

The problem with the time-flags.spec.js file was that one of the functions should not update ctime when calling fs.rename() with NOCTIME. My end goal with this issue was to use a promise to test fs.rename() and not have it update when the flag, NOCTIME, is called.

The following is the link to the Pull Request that I created.

Link To My Pull Request

Working on the Issue that I filed, I realized at one point I wasn’t exactly getting anywhere. After completing what I thought was correct but not having it compile on Git Bash, and having to start over helped me understand Node.js even more. Looking back, the fix was a lot simpler than I thought it would be. By creating a promise variable and applying it to createTree() and stat() and return with rename() I was able to successfully complete my test.

The following is the link to the Pull Request that I reviewed.

Pull Request Reviewed

I noticed that no one had reviewed this person’s contribution so I decided to review it myself. This person had a total of seven commits, but the last four were successful commits. I did not notice any major errors, but I did notice a few style errors, such as a few spelling mistakes and some white line inconsistencies. I made sure to point them out overall and on the lines where I noticed them.

 

So far, the only review comment that I have received wasn’t exactly constructive, but more supportive to my first contribution to an open source project. Nonetheless, it is very much appreciative but I will definitely by checking back to see what reviews are left on my Pull Request so I can improve when it comes to contributing to an Open Source project.

The following are links to my involvement on Slack.

Slack Question

Slack Response 1

Slack Response 2

Since this was my first contribution to an Open Source project, I did not feel confident when it came to mentoring others in this subject. But that did not stop me from asking questions. At first, I used the Slack resource to look at other comments people had posted because their problems were a lot similar to what I had been encountering. After using the responses to other posts to my advantage, I was able to move forward with the test. I did encounter what looking back was such a basic mistake. I was not in my working repos directory, but actually in the directory called repos, that is why I was not able to build my code correctly. After having someone point out the error that I had made, I was able to again move on with my test. I am very thankful that we have Slack at our disposable, and it is such an educational and friendly resource and I will definitely be checking back because I am sure that I might run into some sort of error in the future.

So after completing my first contribution to an Open Source project, I think it was overall a great learning experience. It was definitely time consuming but having my test compile without any errors was a satisfying. Not only have I gained some experience in Node.js, I feel more comfortable using Git Bash and GitHub and I’m looking forward to the next release for this course.