Principles and Practices, Project Management

GIT

""" Git is a version control system (VCS) for tracking changes in computer files and coordinating work on those files among multiple people. It is primarily used for software development, but it can be used to keep track of changes in any files. As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows.

As with most other distributed version control systems, and unlike most client–server systems, every Git directory on every computer is a full-fledged repository with complete history and full version tracking abilities, independent of network access or a central server. """ -- Wikipedia

Since GIT is free software, there are many cloud based git hosting services such as GITHUB, GITLab, etc. We are using GITLab for this course. But note, we will still need to install git into our machine, so that we can track our cloned copy of the repository from GITLab. I'm using a mac machine, which already has git installed. Eventhough I have previous experience using git, I still make mistakes. I had one such mistake and made recovery. I think there is an installer for git in mac OS. In linux, we can do sudo apt-get install git

Created a new project folder. Opened the folder in the terminal. Ran the following commands.

git init Initialises git for the folder (if installed). There will be hidden git files which track the elements of the directory/repository
git config --list Since I already had git installed, I wanted to check the configuration in which it exists.
Found that I had the gobal settings of git linked with a different email. So I ran the following:
git config --local user.name "** Name **"
git config --local user.email "** Email **"
After that we needed to share our ssh key to GITLab so that it can authenticate us when we access it.
ls -al ~/.ssh Shows the ssh folder in my machine. This folder has the secret key as 'id_rsa' and the public key 'id_rsa.pub'.
We copy the public key cat ~/.ssh/id_rsa.pub and paste it to GITLab account settings. Later ran
git clone git@git.fabacademy.org:fabacademy2017/fablabtrivandrum.git
git remote add origin http://git.fabacademy.org/fabacademy2017/fablabtrivandrum.git
git add .
git commit -m "Initial Commit"
git push origin master
Well git push did not work because of authentication error. I couldn't find out the exact mistake I made. I felt it could be the key that I shared (where else could I mess up). So created a new ssh key using ssh-keygen and updated GITLab.



Though the authentication error was bypassed, I was informed to make pull request before pushing my changes.

Errored when making pull request.

Ran git pull origin master --allow-unrelated-histories and still no success.
Got a solution from stack overflow:
git pull --rebase master Looks like my master branch was pointing somewhere that it failed to merge the contents from the pull request. Rebasing it fixed the issue.

Everytime I make a request to my repository, I get a prompt to "Enter passphrase for .." This probably is occuring because of the new ssh key I created. So the following command adds the ssh key to the osx keychain.
ssh-add -K ~/.ssh/id_rsa

Working with Bootstrap

After fixing git issues, started on building this webpage. Professionally I have not used templates much, worked a great deal using polymer (Google's implementation of web components) and this bootstrap template was so easy to work with.
I'm using Sublime Text 3 for editing HTML.

Downloaded this template, it came with lots of files including js files. Some of these features were not required for my page. Also these were taking up memory. As part of reducing the repository size, I tracked which all javascript modules I dont need for the website, and deleted those as well as some img files. Kept the css file from bootstrap and its javascript file which infact used jquery for building its UI. So had to download jquery as well.
After updating the html, I followed the process,

git add .

git commit -m "commit message"

git pull origin master

git push origin master

Duplicated this html and I intend to use it as a template, so that I dont have to redo the css and layout again for upcoming weeks.

For working with html and for writing source codes in upcoming weeks, I'm using Sublime Text 3 which is a cross platform text editor thats under free-software licenses. Its pretty easy to work with and is very light weight. There are lots of plugin based features that could be added to the editor based on our requirement. It does have a strong community as well.


Final Project

For my final project, I intend to do a smart assist for helmet which could be controlled via bluetooth. One of the main constraints for the project would be to make sure I do not loose the peripheral vision and that the optics involved would work good to project the images at a good distance from the eye.

I am planning to use OLED as the light source and use semi reflective mirrors to project it onto the eyes.