We're going to con-figure this out.

02 Feb 2017

At the beginning of the year, I knew nothing about Github (I had an account of course, but that’s it), or git. I’ve just recently decided to explore the GitHub world and I’ve been more than impressed. GitHub is one of the most popular repositories in the modern day, and it’s git functionality is actually a great design that has a lot of benefits for those who use it. I have now successfully designed my “techfolio”, clones repositories in the Desktop app, and cloned repositories to link two different platforms on my computer, wiliki and cloud9, for ease of access during my course labs. —

Configuration Management

After reading some documentation on git, I've found some highlights

the "checkout" command
One of my favorite things to do as a programmer is to write a bunch of code to solve a problem just to see if it works, I'm definitely a trial and error type programmer and I like to try different ideas that can perform what I need the program to do and do it in very little lines. As I've been experimenting with git on my labs, I've found this really great command called "checkout", which will revert to the last version committed to the respository. In this sense, if I'm satisfied with my code and I like how it works so far, I can commit the file with comments and then continue working before pushing it back up into the master repository. This will help when I try and experiment and realize I went down a pretty serious rabbit hole, I can write command "checkout -- my_file" and it will revert back to the last version of this file I committed.
The idea of branching
In a group development environment, every person can have a complete copy of the respository (called a clone) and work on their own branches. This has a really advantage to group projects when programmers work at different times in the day and have different styles of coding (long blocks of time where there's a lot of experimentation or shorter blocks of time where not a lot changes, but usually the programmer is confident in the finality of those changes). This helps only when people know what they're doing though, I haven't had much experience with collaboration with other people using git, but I've even had weird merge conflicts when I'm collaborating with myself, so I can only imagine how hard it must be to collaborate with other people in a much bigger project. Branching is basically a way to change your end of the code without having it affect anybody else who is working on the projects in their own repositories. This can help prevent fake errors that only pop up because someone else is editing a file that your code may reply on at some point.
You are forced to add comments with every commit!
One of the most essential skills of a programmer is their ability to write documentation. This is strongly connected to the idea that someone isn't an expert in a skill until they are able to teach it, in the same way a programmer can increase his or her value by refining their skill in documenation. This skill especially a weak spot with a lot of programmers in the earlier days, I know from experience that when you're only writing a program that takes in data or outputs "Hello World", there doesn't seem to be much sense in writing an algorithm, a README, and adding comments on every change. I am now starting to learn, from various projects, classes, and labs, that documentation is definitely necessary in any code you write.

After reading a lot about git, I’ve come to the conlusion that GitHub is probably popular because of the popularity of git. It solves a lot of problems presented with coding collaborations, especially the fact that it follows the Distributed Version Control Systems (DVCS) architecture which, when used properly, can prevent a lot of overwriting, wrongful merging, and conflicts. I think that among a lot of programmers, a main reason for a GitHub account is the git command, and the benefit of having both public and private repositories with projects available for potential employers, all because of the use of git.